diff --git a/src/pythonxbox/api/provider/presence/models.py b/src/pythonxbox/api/provider/presence/models.py index 0fb766c..c7b2baf 100644 --- a/src/pythonxbox/api/provider/presence/models.py +++ b/src/pythonxbox/api/provider/presence/models.py @@ -32,7 +32,7 @@ class ActivityRecord(CamelCaseModel): class TitleRecord(CamelCaseModel): id: str | None = None name: str | None = None - activity: list[ActivityRecord] | None = None + activity: ActivityRecord | None = None lastModified: str | None = None placement: str | None = None state: str | None = None diff --git a/tests/data/responses/presence_activity.json b/tests/data/responses/presence_activity.json new file mode 100644 index 0000000..35375e4 --- /dev/null +++ b/tests/data/responses/presence_activity.json @@ -0,0 +1,20 @@ +{ + "xuid": "0123456789", + "state": "online", + "devices": [ + { + "type": "D", + "titles": [ + { + "id": "12341234", + "name": "Contoso 5", + "state": "active", + "placement": "fill", + "timestamp": "2012-09-17T07:15:23.4930000", + "activity": {"richPresence": "Team Deathmatch on Nirvana"} + } + ] + } + ] +} + diff --git a/tests/test_presence.py b/tests/test_presence.py index e7711a3..9472157 100644 --- a/tests/test_presence.py +++ b/tests/test_presence.py @@ -77,3 +77,17 @@ async def test_presence_own_set_fail( assert route.called assert not ret + +@pytest.mark.asyncio +async def test_presence_with_activity(respx_mock: MockRouter, xbl_client: XboxLiveClient) -> None: + + route = respx_mock.get("https://userpresence.xboxlive.com").mock( + return_value=Response(200, json=get_response_json("presence_activity")) + ) + + response = await xbl_client.presence.get_presence("0123456789") + + assert route.called + assert response.xuid == "0123456789" + assert response.devices[0].titles[0].activity.richPresence == "Team Deathmatch on Nirvana" +