Skip to content

Commit 82f2a82

Browse files
committed
sync test
1 parent 6435cf1 commit 82f2a82

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

tests/integration/test_data_api.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1576,3 +1576,84 @@ def test_validate_checksum_sync(hashes_match, md5_entry, expectation, tmpdir):
15761576

15771577
with expectation:
15781578
DataAPI.validate_checksum(basic_udm2_asset, testfile)
1579+
1580+
1581+
@respx.mock
1582+
@pytest.mark.anyio
1583+
async def test_get_item_success(item_descriptions, session):
1584+
"""Test getting an item successfully."""
1585+
item = item_descriptions[0]
1586+
item_id = item['id']
1587+
item_type = item['properties']['item_type']
1588+
item_url = f'{TEST_URL}/item-types/{item_type}/items/{item_id}'
1589+
1590+
respx.get(item_url).return_value = httpx.Response(HTTPStatus.OK, json=item)
1591+
1592+
cl = DataClient(session, base_url=TEST_URL)
1593+
result = await cl.get_item(item_type, item_id)
1594+
1595+
assert result == item
1596+
assert respx.calls.last.request.url == item_url
1597+
assert respx.calls.last.response.status_code == HTTPStatus.OK
1598+
1599+
1600+
@respx.mock
1601+
@pytest.mark.anyio
1602+
async def test_get_item_not_found(item_descriptions, session):
1603+
"""Test getting a non-existent item."""
1604+
item_type = item_descriptions[0]['properties']['item_type']
1605+
item_id = 'non-existent-id'
1606+
item_url = f'{TEST_URL}/item-types/{item_type}/items/{item_id}'
1607+
1608+
respx.get(item_url).return_value = httpx.Response(404, json={})
1609+
1610+
cl = DataClient(session, base_url=TEST_URL)
1611+
with pytest.raises(exceptions.MissingResource):
1612+
await cl.get_item(item_type, item_id)
1613+
1614+
1615+
@respx.mock
1616+
@pytest.mark.anyio
1617+
async def test_get_item_coverage_success(item_descriptions, session):
1618+
"""Test get item coverage successfully."""
1619+
1620+
item = item_descriptions[0]
1621+
item_id = item['id']
1622+
item_type = item['properties']['item_type']
1623+
1624+
mock_response = {'clear_percent': 28, 'status': 'complete'}
1625+
1626+
coverage_url = f'{TEST_URL}/item-types/{item_type}/items/{item_id}/coverage'
1627+
respx.post(coverage_url).return_value = httpx.Response(HTTPStatus.OK,
1628+
json=mock_response)
1629+
1630+
cl = DataClient(session, base_url=TEST_URL)
1631+
result = await cl.get_item_coverage(item_type_id=item_type,
1632+
item_id=item_id,
1633+
geometry=item['geometry'],
1634+
mode='UDM2',
1635+
band='cloud')
1636+
1637+
assert str(respx.calls.last.request.url).split('?')[0] == coverage_url
1638+
1639+
assert respx.calls.last.request.url.params['mode'] == 'UDM2'
1640+
assert respx.calls.last.request.url.params['band'] == 'cloud'
1641+
1642+
assert result == mock_response
1643+
1644+
1645+
@respx.mock
1646+
@pytest.mark.anyio
1647+
async def test_get_item_coverage_invalid_geometry(item_descriptions, session):
1648+
item = item_descriptions[0]
1649+
item_id = item['id']
1650+
item_type = item['properties']['item_type']
1651+
1652+
invalid_geom = copy.deepcopy(item['geometry'])
1653+
invalid_geom['type'] = 'invalid_type'
1654+
1655+
cl = DataClient(session, base_url=TEST_URL)
1656+
with pytest.raises(exceptions.GeoJSONError):
1657+
await cl.get_item_coverage(item_type_id=item_type,
1658+
item_id=item_id,
1659+
geometry=invalid_geom)

0 commit comments

Comments
 (0)