From b39028acf2d2105a0ed270ba70b90135b2d9a6e7 Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Sat, 18 May 2024 13:20:08 +0200 Subject: [PATCH] Improve Monzo tests (#117036) --- .../monzo/snapshots/test_sensor.ambr | 204 +++++++++++++++++- tests/components/monzo/test_config_flow.py | 10 +- tests/components/monzo/test_sensor.py | 13 +- 3 files changed, 211 insertions(+), 16 deletions(-) diff --git a/tests/components/monzo/snapshots/test_sensor.ambr b/tests/components/monzo/snapshots/test_sensor.ambr index 5c670e05d14..9be5943d35c 100644 --- a/tests/components/monzo/snapshots/test_sensor.ambr +++ b/tests/components/monzo/snapshots/test_sensor.ambr @@ -1,5 +1,41 @@ # serializer version: 1 -# name: test_all_entities +# name: test_all_entities[sensor.current_account_balance-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.current_account_balance', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 2, + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Balance', + 'platform': 'monzo', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'balance', + 'unique_id': 'acc_curr_balance', + 'unit_of_measurement': 'GBP', + }) +# --- +# name: test_all_entities[sensor.current_account_balance-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'attribution': 'Data provided by Monzo', @@ -15,7 +51,43 @@ 'state': '1.23', }) # --- -# name: test_all_entities.1 +# name: test_all_entities[sensor.current_account_total_balance-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.current_account_total_balance', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 2, + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Total balance', + 'platform': 'monzo', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'total_balance', + 'unique_id': 'acc_curr_total_balance', + 'unit_of_measurement': 'GBP', + }) +# --- +# name: test_all_entities[sensor.current_account_total_balance-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'attribution': 'Data provided by Monzo', @@ -31,7 +103,43 @@ 'state': '3.21', }) # --- -# name: test_all_entities.2 +# name: test_all_entities[sensor.flex_balance-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.flex_balance', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 2, + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Balance', + 'platform': 'monzo', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'balance', + 'unique_id': 'acc_flex_balance', + 'unit_of_measurement': 'GBP', + }) +# --- +# name: test_all_entities[sensor.flex_balance-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'attribution': 'Data provided by Monzo', @@ -47,7 +155,43 @@ 'state': '1.23', }) # --- -# name: test_all_entities.3 +# name: test_all_entities[sensor.flex_total_balance-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.flex_total_balance', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 2, + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Total balance', + 'platform': 'monzo', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'total_balance', + 'unique_id': 'acc_flex_total_balance', + 'unit_of_measurement': 'GBP', + }) +# --- +# name: test_all_entities[sensor.flex_total_balance-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'attribution': 'Data provided by Monzo', @@ -63,3 +207,55 @@ 'state': '3.21', }) # --- +# name: test_all_entities[sensor.savings_balance-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.savings_balance', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 2, + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Balance', + 'platform': 'monzo', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'pot_balance', + 'unique_id': 'pot_savings_pot_balance', + 'unit_of_measurement': 'GBP', + }) +# --- +# name: test_all_entities[sensor.savings_balance-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'attribution': 'Data provided by Monzo', + 'device_class': 'monetary', + 'friendly_name': 'Savings Balance', + 'unit_of_measurement': 'GBP', + }), + 'context': , + 'entity_id': 'sensor.savings_balance', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '1345.78', + }) +# --- diff --git a/tests/components/monzo/test_config_flow.py b/tests/components/monzo/test_config_flow.py index dc3138e6a0d..bd4d8644457 100644 --- a/tests/components/monzo/test_config_flow.py +++ b/tests/components/monzo/test_config_flow.py @@ -38,7 +38,7 @@ async def test_full_flow( }, ) - assert result["type"] == FlowResultType.EXTERNAL_STEP + assert result["type"] is FlowResultType.EXTERNAL_STEP assert result["url"] == ( f"{OAUTH2_AUTHORIZE}/?" f"response_type=code&client_id={CLIENT_ID}&" @@ -69,7 +69,7 @@ async def test_full_flow( assert len(mock_setup.mock_calls) == 0 - assert result["type"] == FlowResultType.FORM + assert result["type"] is FlowResultType.FORM assert result["step_id"] == "await_approval_confirmation" result = await hass.config_entries.flow.async_configure( @@ -79,7 +79,7 @@ async def test_full_flow( assert len(hass.config_entries.async_entries(DOMAIN)) == 1 assert len(mock_setup.mock_calls) == 1 - assert result["type"] == FlowResultType.CREATE_ENTRY + assert result["type"] is FlowResultType.CREATE_ENTRY assert result["title"] == DOMAIN assert "result" in result assert result["result"].unique_id == "600" @@ -109,7 +109,7 @@ async def test_config_non_unique_profile( }, ) - assert result["type"] == FlowResultType.EXTERNAL_STEP + assert result["type"] is FlowResultType.EXTERNAL_STEP assert result["url"] == ( f"{OAUTH2_AUTHORIZE}/?" f"response_type=code&client_id={CLIENT_ID}&" @@ -134,5 +134,5 @@ async def test_config_non_unique_profile( }, ) result = await hass.config_entries.flow.async_configure(result["flow_id"]) - assert result["type"] == FlowResultType.ABORT + assert result["type"] is FlowResultType.ABORT assert result["reason"] == "already_configured" diff --git a/tests/components/monzo/test_sensor.py b/tests/components/monzo/test_sensor.py index 6b5ca4a2349..bf88ce14931 100644 --- a/tests/components/monzo/test_sensor.py +++ b/tests/components/monzo/test_sensor.py @@ -18,12 +18,11 @@ from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN from homeassistant.const import STATE_UNAVAILABLE from homeassistant.core import HomeAssistant, State from homeassistant.helpers import entity_registry as er -from homeassistant.helpers.entity_registry import EntityRegistry from . import setup_integration from .conftest import TEST_ACCOUNTS, TEST_POTS -from tests.common import MockConfigEntry, async_fire_time_changed +from tests.common import MockConfigEntry, async_fire_time_changed, snapshot_platform from tests.typing import ClientSessionGenerator EXPECTED_VALUE_GETTERS = { @@ -66,10 +65,10 @@ async def test_sensor_default_enabled_entities( monzo: AsyncMock, polling_config_entry: MockConfigEntry, hass_client_no_auth: ClientSessionGenerator, + entity_registry: er.EntityRegistry, ) -> None: """Test entities enabled by default.""" await setup_integration(hass, polling_config_entry) - entity_registry: EntityRegistry = er.async_get(hass) for acc in TEST_ACCOUNTS: for sensor_description in ACCOUNT_SENSORS: @@ -106,16 +105,16 @@ async def test_unavailable_entity( async def test_all_entities( hass: HomeAssistant, snapshot: SnapshotAssertion, + entity_registry: er.EntityRegistry, monzo: AsyncMock, polling_config_entry: MockConfigEntry, ) -> None: """Test all entities.""" await setup_integration(hass, polling_config_entry) - for acc in TEST_ACCOUNTS: - for sensor in ACCOUNT_SENSORS: - entity_id = await async_get_entity_id(hass, acc["id"], sensor) - assert hass.states.get(entity_id) == snapshot + await snapshot_platform( + hass, entity_registry, snapshot, polling_config_entry.entry_id + ) async def test_update_failed(