Fix package camera snapshot (#64145)

pull/64148/head
Christopher Bailey 2022-01-14 18:38:01 -05:00 committed by GitHub
parent 8f8ea5b102
commit f4b5b56427
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 58 additions and 4 deletions

View File

@ -162,7 +162,10 @@ class ProtectCamera(ProtectDeviceEntity, Camera):
self, width: int | None = None, height: int | None = None
) -> bytes | None:
"""Return the Camera Image."""
last_image = await self.device.get_snapshot(width, height)
if self.channel.is_package:
last_image = await self.device.get_package_snapshot(width, height)
else:
last_image = await self.device.get_snapshot(width, height)
self._last_image = last_image
return self._last_image

View File

@ -4,7 +4,7 @@
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/unifiprotect",
"requirements": [
"pyunifiprotect==1.6.3"
"pyunifiprotect==1.7.0"
],
"dependencies": [
"http"

View File

@ -2015,7 +2015,7 @@ pytrafikverket==0.1.6.2
pyudev==0.22.0
# homeassistant.components.unifiprotect
pyunifiprotect==1.6.3
pyunifiprotect==1.7.0
# homeassistant.components.uptimerobot
pyuptimerobot==21.11.0

View File

@ -1240,7 +1240,7 @@ pytrafikverket==0.1.6.2
pyudev==0.22.0
# homeassistant.components.unifiprotect
pyunifiprotect==1.6.3
pyunifiprotect==1.7.0
# homeassistant.components.uptimerobot
pyuptimerobot==21.11.0

View File

@ -73,6 +73,44 @@ async def camera_fixture(
return (camera_obj, "camera.test_camera_high")
@pytest.fixture(name="camera_package")
async def camera_package_fixture(
hass: HomeAssistant, mock_entry: MockEntityFixture, mock_camera: Camera
):
"""Fixture for a single camera for testing the camera platform."""
camera_obj = mock_camera.copy(deep=True)
camera_obj._api = mock_entry.api
camera_obj.channels[0]._api = mock_entry.api
camera_obj.channels[1]._api = mock_entry.api
camera_obj.channels[2]._api = mock_entry.api
camera_obj.name = "Test Camera"
camera_obj.feature_flags.has_package_camera = True
camera_obj.channels[0].is_rtsp_enabled = True
camera_obj.channels[0].name = "High"
camera_obj.channels[0].rtsp_alias = "test_high_alias"
camera_obj.channels[1].is_rtsp_enabled = False
camera_obj.channels[2].is_rtsp_enabled = False
package_channel = camera_obj.channels[0].copy(deep=True)
package_channel.is_rtsp_enabled = False
package_channel.name = "Package Camera"
package_channel.id = 3
package_channel.fps = 2
package_channel.rtsp_alias = "test_package_alias"
camera_obj.channels.append(package_channel)
mock_entry.api.bootstrap.cameras = {
camera_obj.id: camera_obj,
}
await hass.config_entries.async_setup(mock_entry.entry.entry_id)
await hass.async_block_till_done()
assert_entity_counts(hass, Platform.CAMERA, 3, 2)
return (camera_obj, "camera.test_camera_package_camera")
def validate_default_camera_entity(
hass: HomeAssistant,
camera_obj: ProtectCamera,
@ -383,6 +421,19 @@ async def test_camera_image(
mock_entry.api.get_camera_snapshot.assert_called_once()
async def test_package_camera_image(
hass: HomeAssistant,
mock_entry: MockEntityFixture,
camera_package: tuple[Camera, str],
):
"""Test retrieving package camera image."""
mock_entry.api.get_package_camera_snapshot = AsyncMock()
await async_get_image(hass, camera_package[1])
mock_entry.api.get_package_camera_snapshot.assert_called_once()
async def test_camera_generic_update(
hass: HomeAssistant,
mock_entry: MockEntityFixture,