@@ -1361,6 +1361,10 @@ def test_bands_from_stac_item(self, data, expected):
13611361 item = pystac .Item .from_dict (data )
13621362 assert _StacMetadataParser ().bands_from_stac_item (item = item ) == expected
13631363
1364+ def test_bands_from_stac_item_no_bands (self ):
1365+ item = pystac .Item .from_dict (StacDummyBuilder .item ())
1366+ assert _StacMetadataParser ().bands_from_stac_item (item = item ) == []
1367+
13641368 @pytest .mark .parametrize (
13651369 ["data" , "expected" ],
13661370 [
@@ -1390,33 +1394,182 @@ def test_bands_from_stac_item_band_names(self, data, expected):
13901394 assert _StacMetadataParser ().bands_from_stac_item (item = item ).band_names () == expected
13911395
13921396 @pytest .mark .parametrize (
1393- ["data " , "expected" ],
1397+ ["entities" , "kwargs " , "expected" ],
13941398 [
13951399 (
1396- StacDummyBuilder .collection (
1400+ {
1401+ "item.json" : StacDummyBuilder .item (
1402+ stac_version = "1.0.0" ,
1403+ links = [{"rel" : "collection" , "href" : "collection.json" }],
1404+ ),
1405+ "collection.json" : StacDummyBuilder .collection (
1406+ stac_version = "1.0.0" ,
1407+ stac_extensions = ["https://stac-extensions.github.io/eo/v1.1.0/schema.json" ],
1408+ summaries = {"eo:bands" : [{"name" : "B02" }, {"name" : "B03" }]},
1409+ ),
1410+ },
1411+ {},
1412+ [Band ("B02" ), Band ("B03" )],
1413+ ),
1414+ (
1415+ {
1416+ "item.json" : StacDummyBuilder .item (
1417+ stac_version = "1.1.0" ,
1418+ links = [{"rel" : "collection" , "href" : "collection.json" }],
1419+ ),
1420+ "collection.json" : StacDummyBuilder .collection (
1421+ stac_version = "1.1.0" ,
1422+ summaries = {"bands" : [{"name" : "B02" }, {"name" : "B03" }]},
1423+ ),
1424+ },
1425+ {},
1426+ [Band ("B02" ), Band ("B03" )],
1427+ ),
1428+ (
1429+ {
1430+ "item.json" : StacDummyBuilder .item (
1431+ stac_version = "1.1.0" ,
1432+ links = [{"rel" : "collection" , "href" : "collection.json" }],
1433+ ),
1434+ "collection.json" : StacDummyBuilder .collection (
1435+ stac_version = "1.1.0" ,
1436+ summaries = {"bands" : [{"name" : "B02" }, {"name" : "B03" }]},
1437+ ),
1438+ },
1439+ {"consult_collection" : False },
1440+ [],
1441+ ),
1442+ (
1443+ {
1444+ "item.json" : StacDummyBuilder .item (
1445+ stac_version = "1.1.0" ,
1446+ properties = {"bands" : [{"name" : "B03" }]},
1447+ links = [{"rel" : "collection" , "href" : "collection.json" }],
1448+ ),
1449+ "collection.json" : StacDummyBuilder .collection (
1450+ stac_version = "1.1.0" ,
1451+ summaries = {"bands" : [{"name" : "B02" }, {"name" : "B03" }]},
1452+ ),
1453+ },
1454+ {},
1455+ [Band ("B03" )],
1456+ ),
1457+ ],
1458+ )
1459+ def test_bands_from_stac_item_consult_collection (self , tmp_path , entities , kwargs , expected ):
1460+ for name , content in entities .items ():
1461+ (tmp_path / name ).write_text (json .dumps (content ))
1462+ item = pystac .Item .from_file (tmp_path / "item.json" )
1463+ assert _StacMetadataParser ().bands_from_stac_item (item = item , ** kwargs ) == expected
1464+
1465+ @pytest .mark .parametrize (
1466+ ["data" , "kwargs" , "expected" ],
1467+ [
1468+ (
1469+ StacDummyBuilder .item (
13971470 stac_version = "1.0.0" ,
13981471 stac_extensions = ["https://stac-extensions.github.io/eo/v1.1.0/schema.json" ],
1399- summaries = {"eo:bands" : [{"name" : "B02" }, {"name" : "B03" }, {"name" : "B04" }]},
1472+ properties = {
1473+ "eo:bands" : [{"name" : "B03" }, {"name" : "B04" }],
1474+ },
1475+ assets = {
1476+ "asset1" : {
1477+ "href" : "https://stac.test/asset.tif" ,
1478+ "roles" : ["data" ],
1479+ }
1480+ },
14001481 ),
1401- [Band ("B02" ), Band ("B03" ), Band ("B04" )],
1482+ {},
1483+ [Band ("B03" ), Band ("B04" )],
14021484 ),
14031485 (
1404- StacDummyBuilder .collection (
1405- stac_version = "1.1.0" ,
1406- summaries = {"bands" : [{"name" : "B02" }, {"name" : "B03" }, {"name" : "B04" }]},
1486+ StacDummyBuilder .item (
1487+ stac_version = "1.0.0" ,
1488+ stac_extensions = ["https://stac-extensions.github.io/eo/v1.1.0/schema.json" ],
1489+ properties = {
1490+ "eo:bands" : [{"name" : "B03" }, {"name" : "B04" }],
1491+ },
1492+ assets = {
1493+ "asset1" : {
1494+ "href" : "https://stac.test/asset.tif" ,
1495+ "roles" : ["data" ],
1496+ "eo:bands" : [{"name" : "B02" }],
1497+ }
1498+ },
14071499 ),
1408- [Band ("B02" ), Band ("B03" ), Band ("B04" )],
1500+ {},
1501+ [Band ("B03" ), Band ("B04" )],
1502+ ),
1503+ (
1504+ StacDummyBuilder .item (
1505+ stac_version = "1.0.0" ,
1506+ stac_extensions = ["https://stac-extensions.github.io/eo/v1.1.0/schema.json" ],
1507+ assets = {
1508+ "asset1" : {
1509+ "href" : "https://stac.test/asset.tif" ,
1510+ "roles" : ["data" ],
1511+ "eo:bands" : [{"name" : "B02" }],
1512+ }
1513+ },
1514+ ),
1515+ {},
1516+ [Band ("B02" )],
1517+ ),
1518+ (
1519+ StacDummyBuilder .item (
1520+ stac_version = "1.0.0" ,
1521+ stac_extensions = ["https://stac-extensions.github.io/eo/v1.1.0/schema.json" ],
1522+ assets = {
1523+ "asset1" : {
1524+ "href" : "https://stac.test/asset.tif" ,
1525+ "roles" : ["data" ],
1526+ "eo:bands" : [{"name" : "B02" }],
1527+ },
1528+ "asset2" : {
1529+ "href" : "https://stac.test/asset.tif" ,
1530+ "roles" : ["data" ],
1531+ "eo:bands" : [{"name" : "B05" }],
1532+ },
1533+ },
1534+ ),
1535+ {},
1536+ [Band ("B02" ), Band ("B05" )],
1537+ ),
1538+ (
1539+ StacDummyBuilder .item (
1540+ stac_version = "1.0.0" ,
1541+ stac_extensions = ["https://stac-extensions.github.io/eo/v1.1.0/schema.json" ],
1542+ assets = {
1543+ "asset1" : {
1544+ "href" : "https://stac.test/asset.tif" ,
1545+ "roles" : ["data" ],
1546+ "eo:bands" : [{"name" : "B02" }],
1547+ }
1548+ },
1549+ ),
1550+ {"consult_assets" : False },
1551+ [],
1552+ ),
1553+ (
1554+ StacDummyBuilder .item (
1555+ stac_version = "1.0.0" ,
1556+ stac_extensions = ["https://stac-extensions.github.io/eo/v1.1.0/schema.json" ],
1557+ assets = {
1558+ "asset1" : {
1559+ "href" : "https://stac.test/asset.tif" ,
1560+ "roles" : ["data" ],
1561+ "bands" : [{"name" : "B02" , "eo:common_name" : "red" , "eo:center_wavelength" : 0.665 }],
1562+ }
1563+ },
1564+ ),
1565+ {},
1566+ [Band ("B02" , common_name = "red" , wavelength_um = 0.665 )],
14091567 ),
14101568 ],
14111569 )
1412- def test_bands_from_stac_item_parent_collection (self , data , expected ):
1413- collection = pystac .Collection .from_dict (data )
1414- item = pystac .Item .from_dict (StacDummyBuilder .item (collection = collection ))
1415- assert _StacMetadataParser ().bands_from_stac_item (item = item ) == expected
1416-
1417- def test_bands_from_stac_item_no_bands (self ):
1418- item = pystac .Item .from_dict (StacDummyBuilder .item ())
1419- assert _StacMetadataParser ().bands_from_stac_item (item = item ) == []
1570+ def test_bands_from_stac_item_consult_assets (self , data , expected , kwargs ):
1571+ item = pystac .Item .from_dict (data )
1572+ assert _StacMetadataParser ().bands_from_stac_item (item = item , ** kwargs ) == expected
14201573
14211574 @pytest .mark .parametrize (
14221575 ["data" , "expected" ],
0 commit comments