|
| 1 | +from datetime import datetime |
1 | 2 | from unittest import TestCase
|
| 3 | +from unittest.mock import Mock |
2 | 4 |
|
3 | 5 | from harmony.message import Message
|
4 | 6 | from harmony.util import config
|
| 7 | +from pystac import Asset, Item |
5 | 8 |
|
6 | 9 | from harmony_browse_image_generator.adapter import BrowseImageGeneratorAdapter
|
7 | 10 | from harmony_browse_image_generator.exceptions import HyBIGInvalidMessageError
|
@@ -152,3 +155,60 @@ def test_create_output_stac_items(self):
|
152 | 155 | self.assertEqual(
|
153 | 156 | output_stac_item.assets['auxiliary'].title, 'browse.png.aux.xml'
|
154 | 157 | )
|
| 158 | + |
| 159 | + |
| 160 | +class TestAdapterAssetFromItem(TestCase): |
| 161 | + """A class testing get_asset_from_item function.""" |
| 162 | + |
| 163 | + def setUp(self): |
| 164 | + self.adapter = BrowseImageGeneratorAdapter({}, {}) |
| 165 | + self.visual_asset = Asset(Mock(), roles=['visual']) |
| 166 | + self.data_asset = Asset(Mock(), roles=['data']) |
| 167 | + self.none_asset = Asset(Mock(), roles=[]) |
| 168 | + self.other_asset = Asset(Mock(), roles=['other']) |
| 169 | + |
| 170 | + def item_fixture(self, assets: dict) -> Item: |
| 171 | + item = Item(Mock(), None, None, datetime.now(), {}) |
| 172 | + item.assets = assets |
| 173 | + return item |
| 174 | + |
| 175 | + def test_get_asset_from_item_with_visual_role(self): |
| 176 | + with self.subTest('data asset first'): |
| 177 | + item = self.item_fixture( |
| 178 | + {'data': self.data_asset, 'visual': self.visual_asset} |
| 179 | + ) |
| 180 | + expected = self.visual_asset |
| 181 | + |
| 182 | + actual = self.adapter.get_asset_from_item(item) |
| 183 | + |
| 184 | + self.assertEqual(expected, actual) |
| 185 | + |
| 186 | + with self.subTest('visual asset first'): |
| 187 | + item = self.item_fixture( |
| 188 | + {'visual': self.visual_asset, 'data': self.data_asset} |
| 189 | + ) |
| 190 | + expected = self.visual_asset |
| 191 | + |
| 192 | + actual = self.adapter.get_asset_from_item(item) |
| 193 | + |
| 194 | + self.assertEqual(expected, actual) |
| 195 | + |
| 196 | + def test_get_asset_from_item_with_data_role(self): |
| 197 | + item = self.item_fixture({'data': self.data_asset, 'other': self.other_asset}) |
| 198 | + expected = self.data_asset |
| 199 | + |
| 200 | + actual = self.adapter.get_asset_from_item(item) |
| 201 | + |
| 202 | + self.assertEqual(expected, actual) |
| 203 | + |
| 204 | + def test_get_asset_from_item_no_roles(self): |
| 205 | + item = self.item_fixture({'none': self.none_asset}) |
| 206 | + with self.assertRaises(StopIteration): |
| 207 | + self.adapter.get_asset_from_item(item) |
| 208 | + |
| 209 | + def test_get_asset_from_item_no_matching_roles(self): |
| 210 | + item = self.item_fixture( |
| 211 | + {'first': self.other_asset, 'second': self.other_asset} |
| 212 | + ) |
| 213 | + with self.assertRaises(StopIteration): |
| 214 | + self.adapter.get_asset_from_item(item) |
0 commit comments