mirror of
https://github.com/rommapp/romm.git
synced 2026-02-18 00:27:41 +01:00
fix tests
This commit is contained in:
@@ -77,13 +77,10 @@ router = APIRouter(
|
||||
)
|
||||
|
||||
|
||||
def parse_id_value(value: StarletteUploadFile | str | int | None) -> int | None:
|
||||
def parse_id_value(value: StarletteUploadFile | str | None) -> int | None:
|
||||
if not value or isinstance(value, StarletteUploadFile):
|
||||
return None
|
||||
|
||||
if isinstance(value, int):
|
||||
return value
|
||||
|
||||
return int(value)
|
||||
|
||||
|
||||
@@ -764,15 +761,15 @@ async def update_rom(
|
||||
|
||||
cleaned_data: dict[str, Any] = {
|
||||
"igdb_id": parse_id_value(data.get("igdb_id")) or rom.igdb_id,
|
||||
"sgdb_id": parse_id_value(data.get("sgdb_id", rom.sgdb_id)),
|
||||
"moby_id": parse_id_value(data.get("moby_id", rom.moby_id)),
|
||||
"ss_id": parse_id_value(data.get("ss_id", rom.ss_id)),
|
||||
"ra_id": parse_id_value(data.get("ra_id", rom.ra_id)),
|
||||
"launchbox_id": parse_id_value(data.get("launchbox_id", rom.launchbox_id)),
|
||||
"hasheous_id": parse_id_value(data.get("hasheous_id", rom.hasheous_id)),
|
||||
"tgdb_id": parse_id_value(data.get("tgdb_id", rom.tgdb_id)),
|
||||
"flashpoint_id": parse_id_value(data.get("flashpoint_id", rom.flashpoint_id)),
|
||||
"hltb_id": parse_id_value(data.get("hltb_id", rom.hltb_id)),
|
||||
"sgdb_id": parse_id_value(data.get("sgdb_id")) or rom.sgdb_id,
|
||||
"moby_id": parse_id_value(data.get("moby_id")) or rom.moby_id,
|
||||
"ss_id": parse_id_value(data.get("ss_id")) or rom.ss_id,
|
||||
"ra_id": parse_id_value(data.get("ra_id")) or rom.ra_id,
|
||||
"launchbox_id": parse_id_value(data.get("launchbox_id")) or rom.launchbox_id,
|
||||
"hasheous_id": parse_id_value(data.get("hasheous_id")) or rom.hasheous_id,
|
||||
"tgdb_id": parse_id_value(data.get("tgdb_id")) or rom.tgdb_id,
|
||||
"flashpoint_id": parse_id_value(data.get("flashpoint_id")) or rom.flashpoint_id,
|
||||
"hltb_id": parse_id_value(data.get("hltb_id")) or rom.hltb_id,
|
||||
}
|
||||
|
||||
# Add raw metadata parsing
|
||||
|
||||
@@ -23,6 +23,17 @@ def client():
|
||||
yield client
|
||||
|
||||
|
||||
MOCK_IGDB_ID = 11111
|
||||
MOCK_MOBY_ID = 22222
|
||||
MOCK_SS_ID = 33333
|
||||
MOCK_RA_ID = 44444
|
||||
MOCK_LAUNCHBOX_ID = 55555
|
||||
MOCK_FLASHPOINT_ID = 66666
|
||||
MOCK_HLTB_ID = 77777
|
||||
MOCK_SGDB_ID = 88888
|
||||
MOCK_HASHEOUS_ID = 99999
|
||||
|
||||
|
||||
def test_get_rom(client: TestClient, access_token: str, rom: Rom):
|
||||
response = client.get(
|
||||
f"/api/roms/{rom.id}",
|
||||
@@ -68,7 +79,7 @@ def test_update_rom(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={
|
||||
"igdb_id": "236663",
|
||||
"igdb_id": str(MOCK_IGDB_ID),
|
||||
"name": "Metroid Prime Remastered",
|
||||
"slug": "metroid-prime-remastered",
|
||||
"fs_name": "Metroid Prime Remastered.zip",
|
||||
@@ -112,7 +123,9 @@ def test_delete_roms(client: TestClient, access_token: str, rom: Rom):
|
||||
|
||||
|
||||
class TestUpdateMetadataIDs:
|
||||
@patch.object(IGDBHandler, "get_rom_by_id", return_value=IGDBRom(igdb_id=54321))
|
||||
@patch.object(
|
||||
IGDBHandler, "get_rom_by_id", return_value=IGDBRom(igdb_id=MOCK_IGDB_ID)
|
||||
)
|
||||
def test_update_rom_igdb_id(
|
||||
self,
|
||||
get_rom_by_id_mock: AsyncMock,
|
||||
@@ -124,16 +137,18 @@ class TestUpdateMetadataIDs:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"igdb_id": "54321"},
|
||||
data={"igdb_id": str(MOCK_IGDB_ID)},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
body = response.json()
|
||||
assert body["igdb_id"] == 54321
|
||||
assert body["igdb_id"] == MOCK_IGDB_ID
|
||||
assert get_rom_by_id_mock.called
|
||||
|
||||
@patch.object(
|
||||
MobyGamesHandler, "get_rom_by_id", return_value=MobyGamesRom(moby_id=22222)
|
||||
MobyGamesHandler,
|
||||
"get_rom_by_id",
|
||||
return_value=MobyGamesRom(moby_id=MOCK_MOBY_ID),
|
||||
)
|
||||
def test_update_rom_moby_id(
|
||||
self,
|
||||
@@ -146,15 +161,15 @@ class TestUpdateMetadataIDs:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"moby_id": "22222"},
|
||||
data={"moby_id": str(MOCK_MOBY_ID)},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
body = response.json()
|
||||
assert body["moby_id"] == 22222
|
||||
assert body["moby_id"] == MOCK_MOBY_ID
|
||||
assert get_rom_by_id_mock.called
|
||||
|
||||
@patch.object(SSHandler, "get_rom_by_id", return_value=SSRom(ss_id=33333))
|
||||
@patch.object(SSHandler, "get_rom_by_id", return_value=SSRom(ss_id=MOCK_SS_ID))
|
||||
def test_update_rom_ss_id(
|
||||
self,
|
||||
get_rom_by_id_mock: AsyncMock,
|
||||
@@ -166,15 +181,15 @@ class TestUpdateMetadataIDs:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"ss_id": "33333"},
|
||||
data={"ss_id": str(MOCK_SS_ID)},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
body = response.json()
|
||||
assert body["ss_id"] == 33333
|
||||
assert body["ss_id"] == MOCK_SS_ID
|
||||
assert get_rom_by_id_mock.called
|
||||
|
||||
@patch.object(RAHandler, "get_rom_by_id", return_value=RAGameRom(ra_id=44444))
|
||||
@patch.object(RAHandler, "get_rom_by_id", return_value=RAGameRom(ra_id=MOCK_RA_ID))
|
||||
def test_update_rom_ra_id(
|
||||
self,
|
||||
get_rom_by_id_mock: AsyncMock,
|
||||
@@ -186,16 +201,18 @@ class TestUpdateMetadataIDs:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"ra_id": "44444"},
|
||||
data={"ra_id": str(MOCK_RA_ID)},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
body = response.json()
|
||||
assert body["ra_id"] == 44444
|
||||
assert body["ra_id"] == MOCK_RA_ID
|
||||
assert get_rom_by_id_mock.called
|
||||
|
||||
@patch.object(
|
||||
LaunchboxHandler, "get_rom_by_id", return_value=LaunchboxRom(launchbox_id=55555)
|
||||
LaunchboxHandler,
|
||||
"get_rom_by_id",
|
||||
return_value=LaunchboxRom(launchbox_id=MOCK_LAUNCHBOX_ID),
|
||||
)
|
||||
def test_update_rom_launchbox_id(
|
||||
self,
|
||||
@@ -208,18 +225,18 @@ class TestUpdateMetadataIDs:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"launchbox_id": "55555"},
|
||||
data={"launchbox_id": str(MOCK_LAUNCHBOX_ID)},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
body = response.json()
|
||||
assert body["launchbox_id"] == 55555
|
||||
assert body["launchbox_id"] == MOCK_LAUNCHBOX_ID
|
||||
assert get_rom_by_id_mock.called
|
||||
|
||||
@patch.object(
|
||||
FlashpointHandler,
|
||||
"get_rom_by_id",
|
||||
return_value=FlashpointRom(flashpoint_id="88888"),
|
||||
return_value=FlashpointRom(flashpoint_id=str(MOCK_FLASHPOINT_ID)),
|
||||
)
|
||||
def test_update_rom_flashpoint_id(
|
||||
self,
|
||||
@@ -232,12 +249,12 @@ class TestUpdateMetadataIDs:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"flashpoint_id": "88888"},
|
||||
data={"flashpoint_id": str(MOCK_FLASHPOINT_ID)},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
body = response.json()
|
||||
assert body["flashpoint_id"] == "88888"
|
||||
assert body["flashpoint_id"] == str(MOCK_FLASHPOINT_ID)
|
||||
assert get_rom_by_id_mock.called
|
||||
|
||||
# These metadata sources are not called when updating roms
|
||||
@@ -246,12 +263,12 @@ class TestUpdateMetadataIDs:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"sgdb_id": "67890"},
|
||||
data={"sgdb_id": str(MOCK_SGDB_ID)},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
body = response.json()
|
||||
assert body["sgdb_id"] == 67890
|
||||
assert body["sgdb_id"] == MOCK_SGDB_ID
|
||||
|
||||
def test_update_rom_hasheous_id(
|
||||
self, client: TestClient, access_token: str, rom: Rom
|
||||
@@ -260,29 +277,38 @@ class TestUpdateMetadataIDs:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"hasheous_id": "66666"},
|
||||
data={"hasheous_id": str(MOCK_HASHEOUS_ID)},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
body = response.json()
|
||||
assert body["hasheous_id"] == 66666
|
||||
assert body["hasheous_id"] == MOCK_HASHEOUS_ID
|
||||
|
||||
def test_update_rom_hltb_id(self, client: TestClient, access_token: str, rom: Rom):
|
||||
"""Test updating HowLongToBeat ID."""
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"hltb_id": "99999"},
|
||||
data={"hltb_id": str(MOCK_HLTB_ID)},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
body = response.json()
|
||||
assert body["hltb_id"] == 99999
|
||||
assert body["hltb_id"] == MOCK_HLTB_ID
|
||||
|
||||
|
||||
class TestUpdateRawMetadata:
|
||||
@patch.object(
|
||||
IGDBHandler,
|
||||
"get_rom_by_id",
|
||||
return_value=IGDBRom(igdb_id=MOCK_IGDB_ID),
|
||||
)
|
||||
def test_update_raw_igdb_metadata(
|
||||
self, client: TestClient, access_token: str, rom: Rom
|
||||
self,
|
||||
get_rom_by_id_mock: AsyncMock,
|
||||
client: TestClient,
|
||||
access_token: str,
|
||||
rom: Rom,
|
||||
):
|
||||
"""Test updating raw IGDB metadata."""
|
||||
raw_metadata = {
|
||||
@@ -293,7 +319,10 @@ class TestUpdateRawMetadata:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"raw_igdb_metadata": json.dumps(raw_metadata)},
|
||||
data={
|
||||
"igdb_id": str(MOCK_IGDB_ID),
|
||||
"raw_igdb_metadata": json.dumps(raw_metadata),
|
||||
},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
@@ -302,8 +331,17 @@ class TestUpdateRawMetadata:
|
||||
assert body["igdb_metadata"]["genres"] == ["Action"]
|
||||
assert body["igdb_metadata"]["franchises"] == ["Metroid"]
|
||||
|
||||
@patch.object(
|
||||
MobyGamesHandler,
|
||||
"get_rom_by_id",
|
||||
return_value=MobyGamesRom(moby_id=MOCK_MOBY_ID),
|
||||
)
|
||||
def test_update_raw_moby_metadata(
|
||||
self, client: TestClient, access_token: str, rom: Rom
|
||||
self,
|
||||
get_rom_by_id_mock: AsyncMock,
|
||||
client: TestClient,
|
||||
access_token: str,
|
||||
rom: Rom,
|
||||
):
|
||||
"""Test updating raw MobyGames metadata."""
|
||||
raw_metadata = {
|
||||
@@ -314,7 +352,10 @@ class TestUpdateRawMetadata:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"raw_moby_metadata": json.dumps(raw_metadata)},
|
||||
data={
|
||||
"moby_id": str(MOCK_MOBY_ID),
|
||||
"raw_moby_metadata": json.dumps(raw_metadata),
|
||||
},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
@@ -323,8 +364,17 @@ class TestUpdateRawMetadata:
|
||||
assert body["moby_metadata"]["moby_score"] == "90"
|
||||
assert body["moby_metadata"]["genres"] == ["Action", "Adventure"]
|
||||
|
||||
@patch.object(
|
||||
SSHandler,
|
||||
"get_rom_by_id",
|
||||
return_value=SSRom(ss_id=MOCK_SS_ID),
|
||||
)
|
||||
def test_update_raw_ss_metadata(
|
||||
self, client: TestClient, access_token: str, rom: Rom
|
||||
self,
|
||||
get_rom_by_id_mock: AsyncMock,
|
||||
client: TestClient,
|
||||
access_token: str,
|
||||
rom: Rom,
|
||||
):
|
||||
"""Test updating raw ScreenScraper metadata."""
|
||||
raw_metadata = {
|
||||
@@ -335,7 +385,10 @@ class TestUpdateRawMetadata:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"raw_ss_metadata": json.dumps(raw_metadata)},
|
||||
data={
|
||||
"ss_id": str(MOCK_SS_ID),
|
||||
"raw_ss_metadata": json.dumps(raw_metadata),
|
||||
},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
@@ -344,8 +397,17 @@ class TestUpdateRawMetadata:
|
||||
assert body["ss_metadata"]["ss_score"] == "85"
|
||||
assert body["ss_metadata"]["alternative_names"] == ["Test SS Game"]
|
||||
|
||||
@patch.object(
|
||||
LaunchboxHandler,
|
||||
"get_rom_by_id",
|
||||
return_value=LaunchboxRom(launchbox_id=MOCK_LAUNCHBOX_ID),
|
||||
)
|
||||
def test_update_raw_launchbox_metadata(
|
||||
self, client: TestClient, access_token: str, rom: Rom
|
||||
self,
|
||||
get_rom_by_id_mock: AsyncMock,
|
||||
client: TestClient,
|
||||
access_token: str,
|
||||
rom: Rom,
|
||||
):
|
||||
"""Test updating raw LaunchBox metadata."""
|
||||
raw_metadata = {
|
||||
@@ -357,7 +419,10 @@ class TestUpdateRawMetadata:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"raw_launchbox_metadata": json.dumps(raw_metadata)},
|
||||
data={
|
||||
"launchbox_id": str(MOCK_LAUNCHBOX_ID),
|
||||
"raw_launchbox_metadata": json.dumps(raw_metadata),
|
||||
},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
@@ -380,7 +445,10 @@ class TestUpdateRawMetadata:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"raw_hasheous_metadata": json.dumps(raw_metadata)},
|
||||
data={
|
||||
"hasheous_id": str(MOCK_HASHEOUS_ID),
|
||||
"raw_hasheous_metadata": json.dumps(raw_metadata),
|
||||
},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
@@ -390,8 +458,17 @@ class TestUpdateRawMetadata:
|
||||
assert body["hasheous_metadata"]["mame_arcade_match"] is False
|
||||
assert body["hasheous_metadata"]["mame_mess_match"] is True
|
||||
|
||||
@patch.object(
|
||||
FlashpointHandler,
|
||||
"get_rom_by_id",
|
||||
return_value=FlashpointRom(flashpoint_id=str(MOCK_FLASHPOINT_ID)),
|
||||
)
|
||||
def test_update_raw_flashpoint_metadata(
|
||||
self, client: TestClient, access_token: str, rom: Rom
|
||||
self,
|
||||
get_rom_by_id_mock: AsyncMock,
|
||||
client: TestClient,
|
||||
access_token: str,
|
||||
rom: Rom,
|
||||
):
|
||||
"""Test updating raw Flashpoint metadata."""
|
||||
raw_metadata = {
|
||||
@@ -403,7 +480,10 @@ class TestUpdateRawMetadata:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"raw_flashpoint_metadata": json.dumps(raw_metadata)},
|
||||
data={
|
||||
"flashpoint_id": str(MOCK_FLASHPOINT_ID),
|
||||
"raw_flashpoint_metadata": json.dumps(raw_metadata),
|
||||
},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
@@ -414,7 +494,10 @@ class TestUpdateRawMetadata:
|
||||
assert body["flashpoint_metadata"]["source"] == "Flashpoint"
|
||||
|
||||
def test_update_raw_hltb_metadata(
|
||||
self, client: TestClient, access_token: str, rom: Rom
|
||||
self,
|
||||
client: TestClient,
|
||||
access_token: str,
|
||||
rom: Rom,
|
||||
):
|
||||
"""Test updating raw HowLongToBeat metadata."""
|
||||
raw_metadata = {
|
||||
@@ -425,7 +508,10 @@ class TestUpdateRawMetadata:
|
||||
response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"raw_hltb_metadata": json.dumps(raw_metadata)},
|
||||
data={
|
||||
"hltb_id": str(MOCK_HLTB_ID),
|
||||
"raw_hltb_metadata": json.dumps(raw_metadata),
|
||||
},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
@@ -435,7 +521,9 @@ class TestUpdateRawMetadata:
|
||||
assert body["hltb_metadata"]["main_story_count"] == 1
|
||||
|
||||
# Tests for combined updates
|
||||
@patch.object(IGDBHandler, "get_rom_by_id", return_value=IGDBRom(igdb_id=99999))
|
||||
@patch.object(
|
||||
IGDBHandler, "get_rom_by_id", return_value=IGDBRom(igdb_id=MOCK_IGDB_ID)
|
||||
)
|
||||
def test_update_rom_metadata_id_and_raw_metadata(
|
||||
self,
|
||||
get_rom_by_id_mock: AsyncMock,
|
||||
@@ -453,7 +541,7 @@ class TestUpdateRawMetadata:
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={
|
||||
"igdb_id": "99999",
|
||||
"igdb_id": str(MOCK_IGDB_ID),
|
||||
"raw_igdb_metadata": json.dumps(raw_igdb_metadata),
|
||||
},
|
||||
)
|
||||
@@ -461,16 +549,20 @@ class TestUpdateRawMetadata:
|
||||
assert get_rom_by_id_mock.called
|
||||
|
||||
body = response.json()
|
||||
assert body["igdb_id"] == 99999
|
||||
assert body["igdb_id"] == MOCK_IGDB_ID
|
||||
assert body["igdb_metadata"] is not None
|
||||
assert body["igdb_metadata"]["genres"] == ["Action"]
|
||||
assert body["igdb_metadata"]["franchises"] == ["Metroid"]
|
||||
|
||||
@patch.object(IGDBHandler, "get_rom_by_id", return_value=IGDBRom(igdb_id=11111))
|
||||
@patch.object(
|
||||
MobyGamesHandler, "get_rom_by_id", return_value=MobyGamesRom(moby_id=22222)
|
||||
IGDBHandler, "get_rom_by_id", return_value=IGDBRom(igdb_id=MOCK_IGDB_ID)
|
||||
)
|
||||
@patch.object(SSHandler, "get_rom_by_id", return_value=SSRom(ss_id=33333))
|
||||
@patch.object(
|
||||
MobyGamesHandler,
|
||||
"get_rom_by_id",
|
||||
return_value=MobyGamesRom(moby_id=MOCK_MOBY_ID),
|
||||
)
|
||||
@patch.object(SSHandler, "get_rom_by_id", return_value=SSRom(ss_id=MOCK_SS_ID))
|
||||
def test_update_rom_multiple_metadata_ids(
|
||||
self,
|
||||
igdb_get_rom_by_id_mock: AsyncMock,
|
||||
@@ -485,9 +577,9 @@ class TestUpdateRawMetadata:
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={
|
||||
"igdb_id": "11111",
|
||||
"moby_id": "22222",
|
||||
"ss_id": "33333",
|
||||
"igdb_id": str(MOCK_IGDB_ID),
|
||||
"moby_id": str(MOCK_MOBY_ID),
|
||||
"ss_id": str(MOCK_SS_ID),
|
||||
},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
@@ -496,12 +588,27 @@ class TestUpdateRawMetadata:
|
||||
assert ss_get_rom_by_id_mock.called
|
||||
|
||||
body = response.json()
|
||||
assert body["igdb_id"] == 11111
|
||||
assert body["moby_id"] == 22222
|
||||
assert body["ss_id"] == 33333
|
||||
assert body["igdb_id"] == MOCK_IGDB_ID
|
||||
assert body["moby_id"] == MOCK_MOBY_ID
|
||||
assert body["ss_id"] == MOCK_SS_ID
|
||||
|
||||
@patch.object(
|
||||
IGDBHandler, "get_rom_by_id", return_value=IGDBRom(igdb_id=MOCK_IGDB_ID)
|
||||
)
|
||||
@patch.object(
|
||||
MobyGamesHandler,
|
||||
"get_rom_by_id",
|
||||
return_value=MobyGamesRom(moby_id=MOCK_MOBY_ID),
|
||||
)
|
||||
@patch.object(SSHandler, "get_rom_by_id", return_value=SSRom(ss_id=MOCK_SS_ID))
|
||||
def test_update_rom_multiple_raw_metadata(
|
||||
self, client: TestClient, access_token: str, rom: Rom
|
||||
self,
|
||||
igdb_get_rom_by_id_mock: AsyncMock,
|
||||
moby_get_rom_by_id_mock: AsyncMock,
|
||||
ss_get_rom_by_id_mock: AsyncMock,
|
||||
client: TestClient,
|
||||
access_token: str,
|
||||
rom: Rom,
|
||||
):
|
||||
"""Test updating multiple raw metadata fields in the same request."""
|
||||
raw_igdb = {
|
||||
@@ -521,12 +628,18 @@ class TestUpdateRawMetadata:
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={
|
||||
"igdb_id": str(MOCK_IGDB_ID),
|
||||
"moby_id": str(MOCK_MOBY_ID),
|
||||
"ss_id": str(MOCK_SS_ID),
|
||||
"raw_igdb_metadata": json.dumps(raw_igdb),
|
||||
"raw_moby_metadata": json.dumps(raw_moby),
|
||||
"raw_ss_metadata": json.dumps(raw_ss),
|
||||
},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
assert igdb_get_rom_by_id_mock.called
|
||||
assert moby_get_rom_by_id_mock.called
|
||||
assert ss_get_rom_by_id_mock.called
|
||||
|
||||
body = response.json()
|
||||
assert body["igdb_metadata"] is not None
|
||||
@@ -543,7 +656,10 @@ class TestUpdateRawMetadata:
|
||||
|
||||
# Tests for invalid JSON handling
|
||||
def test_update_rom_invalid_json_raw_metadata(
|
||||
self, client: TestClient, access_token: str, rom: Rom
|
||||
self,
|
||||
client: TestClient,
|
||||
access_token: str,
|
||||
rom: Rom,
|
||||
):
|
||||
"""Test that invalid JSON in raw metadata is handled gracefully."""
|
||||
response = client.put(
|
||||
@@ -553,9 +669,9 @@ class TestUpdateRawMetadata:
|
||||
)
|
||||
# Should still succeed, but raw metadata should not be updated
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
# The invalid JSON should be ignored, so igdb_metadata should remain unchanged
|
||||
# (or be None if it was None before)
|
||||
body = response.json()
|
||||
assert body["igdb_metadata"] == {}
|
||||
|
||||
def test_update_rom_empty_raw_metadata(
|
||||
self, client: TestClient, access_token: str, rom: Rom
|
||||
@@ -567,12 +683,15 @@ class TestUpdateRawMetadata:
|
||||
data={"raw_igdb_metadata": ""},
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
# Empty string should be ignored, so igdb_metadata should remain unchanged
|
||||
body = response.json()
|
||||
assert body["igdb_metadata"] == {}
|
||||
|
||||
|
||||
class TestUnmatchMetadata:
|
||||
@patch.object(IGDBHandler, "get_rom_by_id", return_value=IGDBRom(igdb_id=12345))
|
||||
@patch.object(
|
||||
IGDBHandler, "get_rom_by_id", return_value=IGDBRom(igdb_id=MOCK_IGDB_ID)
|
||||
)
|
||||
def test_update_rom_unmatch_metadata(
|
||||
self,
|
||||
get_rom_by_id_mock: AsyncMock,
|
||||
@@ -585,13 +704,13 @@ class TestUnmatchMetadata:
|
||||
initial_response = client.put(
|
||||
f"/api/roms/{rom.id}",
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
data={"igdb_id": "12345"},
|
||||
data={"igdb_id": str(MOCK_IGDB_ID)},
|
||||
)
|
||||
assert initial_response.status_code == status.HTTP_200_OK
|
||||
assert get_rom_by_id_mock.called
|
||||
|
||||
initial_body = initial_response.json()
|
||||
assert initial_body["igdb_id"] == 12345
|
||||
assert initial_body["igdb_id"] == MOCK_IGDB_ID
|
||||
assert initial_body["igdb_metadata"] is not None
|
||||
|
||||
# Now unmatch all metadata
|
||||
@@ -637,7 +756,7 @@ class TestUnmatchMetadata:
|
||||
headers={"Authorization": f"Bearer {access_token}"},
|
||||
params={"unmatch_metadata": True},
|
||||
data={
|
||||
"igdb_id": "12345", # This should be ignored
|
||||
"igdb_id": str(MOCK_IGDB_ID), # This should be ignored
|
||||
"name": "Should be ignored", # This should be ignored
|
||||
"summary": "Should be ignored", # This should be ignored
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user