From 4c008a5cb549a32e7aa4320ae42e94e5a6f5113a Mon Sep 17 00:00:00 2001 From: Sid <27780930+autinerd@users.noreply.github.com> Date: Mon, 20 Jan 2025 20:00:02 +0100 Subject: [PATCH] Fix upload service response for google_photos (#136106) --- .../components/google_photos/services.py | 8 ++- .../components/google_photos/test_services.py | 51 +++++++++++++++---- 2 files changed, 44 insertions(+), 15 deletions(-) diff --git a/homeassistant/components/google_photos/services.py b/homeassistant/components/google_photos/services.py index f23a706b2e2..22d3cc7deb0 100644 --- a/homeassistant/components/google_photos/services.py +++ b/homeassistant/components/google_photos/services.py @@ -144,11 +144,9 @@ def async_register_services(hass: HomeAssistant) -> None: if call.return_response: return { "media_items": [ - { - "media_item_id": item_result.media_item.id - for item_result in upload_result.new_media_item_results - if item_result.media_item and item_result.media_item.id - } + {"media_item_id": item_result.media_item.id} + for item_result in upload_result.new_media_item_results + if item_result.media_item and item_result.media_item.id ], "album_id": album_id, } diff --git a/tests/components/google_photos/test_services.py b/tests/components/google_photos/test_services.py index 381fb1c431f..e02253be887 100644 --- a/tests/components/google_photos/test_services.py +++ b/tests/components/google_photos/test_services.py @@ -74,24 +74,55 @@ def mock_upload_file( yield +@pytest.mark.parametrize( + ("media_items_result", "service_response"), + [ + ( + CreateMediaItemsResult( + new_media_item_results=[ + NewMediaItemResult( + upload_token="some-upload-token", + status=Status(code=200), + media_item=MediaItem(id="new-media-item-id-1"), + ) + ] + ), + [{"media_item_id": "new-media-item-id-1"}], + ), + ( + CreateMediaItemsResult( + new_media_item_results=[ + NewMediaItemResult( + upload_token="some-upload-token", + status=Status(code=200), + media_item=MediaItem(id="new-media-item-id-1"), + ), + NewMediaItemResult( + upload_token="some-upload-token", + status=Status(code=200), + media_item=MediaItem(id="new-media-item-id-2"), + ), + ] + ), + [ + {"media_item_id": "new-media-item-id-1"}, + {"media_item_id": "new-media-item-id-2"}, + ], + ), + ], +) @pytest.mark.usefixtures("setup_integration") async def test_upload_service( hass: HomeAssistant, config_entry: MockConfigEntry, mock_api: Mock, + media_items_result: CreateMediaItemsResult, + service_response: list[dict[str, str]], ) -> None: """Test service call to upload content.""" assert hass.services.has_service(DOMAIN, "upload") - mock_api.create_media_items.return_value = CreateMediaItemsResult( - new_media_item_results=[ - NewMediaItemResult( - upload_token="some-upload-token", - status=Status(code=200), - media_item=MediaItem(id="new-media-item-id-1"), - ) - ] - ) + mock_api.create_media_items.return_value = media_items_result response = await hass.services.async_call( DOMAIN, @@ -106,7 +137,7 @@ async def test_upload_service( ) assert response == { - "media_items": [{"media_item_id": "new-media-item-id-1"}], + "media_items": service_response, "album_id": "album-media-id-1", }