"""Name <-> id resolution.""" import asyncio import httpx import pytest from familiar import lookup def test_resolve_id_passes_through_numeric(): assert asyncio.run(lookup.resolve_id(34)) == 34 assert asyncio.run(lookup.resolve_id("34")) == 34 def test_resolve_name_picks_requested_category(mock_esi): body = { "inventory_types": [{"id": 34, "name": "Tritanium"}], "systems": [{"id": 30000142, "name": "Jita"}], } mock_esi(lambda req: httpx.Response(200, json=body)) assert asyncio.run(lookup.resolve_name("Tritanium", "inventory_types")) == ( 34, "inventory_types", ) def test_resolve_id_resolves_name(mock_esi): body = {"inventory_types": [{"id": 34, "name": "Tritanium"}]} mock_esi(lambda req: httpx.Response(200, json=body)) assert asyncio.run(lookup.resolve_id("Tritanium", "inventory_types")) == 34 def test_resolve_name_raises_when_absent(mock_esi): mock_esi(lambda req: httpx.Response(200, json={})) with pytest.raises(LookupError): asyncio.run(lookup.resolve_name("Nope", "inventory_types"))