Use SnapshotAssertion in Renault tests (#90778)

This commit is contained in:
epenet 2023-04-30 18:55:31 +02:00 committed by GitHub
parent 9317ddb1c7
commit b969790e95
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 4767 additions and 79 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,539 @@
# serializer version: 1
# name: test_buttons[captur_fuel]
list([
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'renault',
'VF1AAAAA555777123',
),
}),
'is_new': False,
'manufacturer': 'Renault',
'model': 'Captur ii',
'name': 'REG-NUMBER',
'name_by_user': None,
'suggested_area': None,
'sw_version': 'XJB1SU',
'via_device_id': None,
}),
])
# ---
# name: test_buttons[captur_fuel].1
list([
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'button',
'entity_category': None,
'entity_id': 'button.reg_number_start_air_conditioner',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:air-conditioner',
'original_name': 'Start air conditioner',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'start_air_conditioner',
'unique_id': 'vf1aaaaa555777123_start_air_conditioner',
'unit_of_measurement': None,
}),
])
# ---
# name: test_buttons[captur_fuel].2
list([
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Start air conditioner',
'icon': 'mdi:air-conditioner',
}),
'context': <ANY>,
'entity_id': 'button.reg_number_start_air_conditioner',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
])
# ---
# name: test_buttons[captur_phev]
list([
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'renault',
'VF1AAAAA555777123',
),
}),
'is_new': False,
'manufacturer': 'Renault',
'model': 'Captur ii',
'name': 'REG-NUMBER',
'name_by_user': None,
'suggested_area': None,
'sw_version': 'XJB1SU',
'via_device_id': None,
}),
])
# ---
# name: test_buttons[captur_phev].1
list([
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'button',
'entity_category': None,
'entity_id': 'button.reg_number_start_air_conditioner',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:air-conditioner',
'original_name': 'Start air conditioner',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'start_air_conditioner',
'unique_id': 'vf1aaaaa555777123_start_air_conditioner',
'unit_of_measurement': None,
}),
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'button',
'entity_category': None,
'entity_id': 'button.reg_number_start_charge',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:ev-station',
'original_name': 'Start charge',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'start_charge',
'unique_id': 'vf1aaaaa555777123_start_charge',
'unit_of_measurement': None,
}),
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'button',
'entity_category': None,
'entity_id': 'button.reg_number_stop_charge',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:ev-station',
'original_name': 'Stop charge',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'stop_charge',
'unique_id': 'vf1aaaaa555777123_stop_charge',
'unit_of_measurement': None,
}),
])
# ---
# name: test_buttons[captur_phev].2
list([
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Start air conditioner',
'icon': 'mdi:air-conditioner',
}),
'context': <ANY>,
'entity_id': 'button.reg_number_start_air_conditioner',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Start charge',
'icon': 'mdi:ev-station',
}),
'context': <ANY>,
'entity_id': 'button.reg_number_start_charge',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Stop charge',
'icon': 'mdi:ev-station',
}),
'context': <ANY>,
'entity_id': 'button.reg_number_stop_charge',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
])
# ---
# name: test_buttons[zoe_40]
list([
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'renault',
'VF1AAAAA555777999',
),
}),
'is_new': False,
'manufacturer': 'Renault',
'model': 'Zoe',
'name': 'REG-NUMBER',
'name_by_user': None,
'suggested_area': None,
'sw_version': 'X101VE',
'via_device_id': None,
}),
])
# ---
# name: test_buttons[zoe_40].1
list([
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'button',
'entity_category': None,
'entity_id': 'button.reg_number_start_air_conditioner',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:air-conditioner',
'original_name': 'Start air conditioner',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'start_air_conditioner',
'unique_id': 'vf1aaaaa555777999_start_air_conditioner',
'unit_of_measurement': None,
}),
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'button',
'entity_category': None,
'entity_id': 'button.reg_number_start_charge',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:ev-station',
'original_name': 'Start charge',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'start_charge',
'unique_id': 'vf1aaaaa555777999_start_charge',
'unit_of_measurement': None,
}),
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'button',
'entity_category': None,
'entity_id': 'button.reg_number_stop_charge',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:ev-station',
'original_name': 'Stop charge',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'stop_charge',
'unique_id': 'vf1aaaaa555777999_stop_charge',
'unit_of_measurement': None,
}),
])
# ---
# name: test_buttons[zoe_40].2
list([
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Start air conditioner',
'icon': 'mdi:air-conditioner',
}),
'context': <ANY>,
'entity_id': 'button.reg_number_start_air_conditioner',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Start charge',
'icon': 'mdi:ev-station',
}),
'context': <ANY>,
'entity_id': 'button.reg_number_start_charge',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Stop charge',
'icon': 'mdi:ev-station',
}),
'context': <ANY>,
'entity_id': 'button.reg_number_stop_charge',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
])
# ---
# name: test_buttons[zoe_50]
list([
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'renault',
'VF1AAAAA555777999',
),
}),
'is_new': False,
'manufacturer': 'Renault',
'model': 'Zoe',
'name': 'REG-NUMBER',
'name_by_user': None,
'suggested_area': None,
'sw_version': 'X102VE',
'via_device_id': None,
}),
])
# ---
# name: test_buttons[zoe_50].1
list([
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'button',
'entity_category': None,
'entity_id': 'button.reg_number_start_air_conditioner',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:air-conditioner',
'original_name': 'Start air conditioner',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'start_air_conditioner',
'unique_id': 'vf1aaaaa555777999_start_air_conditioner',
'unit_of_measurement': None,
}),
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'button',
'entity_category': None,
'entity_id': 'button.reg_number_start_charge',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:ev-station',
'original_name': 'Start charge',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'start_charge',
'unique_id': 'vf1aaaaa555777999_start_charge',
'unit_of_measurement': None,
}),
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'button',
'entity_category': None,
'entity_id': 'button.reg_number_stop_charge',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:ev-station',
'original_name': 'Stop charge',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'stop_charge',
'unique_id': 'vf1aaaaa555777999_stop_charge',
'unit_of_measurement': None,
}),
])
# ---
# name: test_buttons[zoe_50].2
list([
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Start air conditioner',
'icon': 'mdi:air-conditioner',
}),
'context': <ANY>,
'entity_id': 'button.reg_number_start_air_conditioner',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Start charge',
'icon': 'mdi:ev-station',
}),
'context': <ANY>,
'entity_id': 'button.reg_number_start_charge',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Stop charge',
'icon': 'mdi:ev-station',
}),
'context': <ANY>,
'entity_id': 'button.reg_number_stop_charge',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
])
# ---

View File

@ -0,0 +1,278 @@
# serializer version: 1
# name: test_device_trackers[captur_fuel]
list([
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'renault',
'VF1AAAAA555777123',
),
}),
'is_new': False,
'manufacturer': 'Renault',
'model': 'Captur ii',
'name': 'REG-NUMBER',
'name_by_user': None,
'suggested_area': None,
'sw_version': 'XJB1SU',
'via_device_id': None,
}),
])
# ---
# name: test_device_trackers[captur_fuel].1
list([
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'device_tracker',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'device_tracker.reg_number_location',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:car',
'original_name': 'Location',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'location',
'unique_id': 'vf1aaaaa555777123_location',
'unit_of_measurement': None,
}),
])
# ---
# name: test_device_trackers[captur_fuel].2
list([
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Location',
'gps_accuracy': 0,
'icon': 'mdi:car',
'latitude': 48.1234567,
'longitude': 11.1234567,
'source_type': <SourceType.GPS: 'gps'>,
}),
'context': <ANY>,
'entity_id': 'device_tracker.reg_number_location',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'not_home',
}),
])
# ---
# name: test_device_trackers[captur_phev]
list([
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'renault',
'VF1AAAAA555777123',
),
}),
'is_new': False,
'manufacturer': 'Renault',
'model': 'Captur ii',
'name': 'REG-NUMBER',
'name_by_user': None,
'suggested_area': None,
'sw_version': 'XJB1SU',
'via_device_id': None,
}),
])
# ---
# name: test_device_trackers[captur_phev].1
list([
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'device_tracker',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'device_tracker.reg_number_location',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:car',
'original_name': 'Location',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'location',
'unique_id': 'vf1aaaaa555777123_location',
'unit_of_measurement': None,
}),
])
# ---
# name: test_device_trackers[captur_phev].2
list([
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Location',
'gps_accuracy': 0,
'icon': 'mdi:car',
'latitude': 48.1234567,
'longitude': 11.1234567,
'source_type': <SourceType.GPS: 'gps'>,
}),
'context': <ANY>,
'entity_id': 'device_tracker.reg_number_location',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'not_home',
}),
])
# ---
# name: test_device_trackers[zoe_40]
list([
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'renault',
'VF1AAAAA555777999',
),
}),
'is_new': False,
'manufacturer': 'Renault',
'model': 'Zoe',
'name': 'REG-NUMBER',
'name_by_user': None,
'suggested_area': None,
'sw_version': 'X101VE',
'via_device_id': None,
}),
])
# ---
# name: test_device_trackers[zoe_40].1
list([
])
# ---
# name: test_device_trackers[zoe_40].2
list([
])
# ---
# name: test_device_trackers[zoe_50]
list([
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'renault',
'VF1AAAAA555777999',
),
}),
'is_new': False,
'manufacturer': 'Renault',
'model': 'Zoe',
'name': 'REG-NUMBER',
'name_by_user': None,
'suggested_area': None,
'sw_version': 'X102VE',
'via_device_id': None,
}),
])
# ---
# name: test_device_trackers[zoe_50].1
list([
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'device_tracker',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'device_tracker.reg_number_location',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:car',
'original_name': 'Location',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'location',
'unique_id': 'vf1aaaaa555777999_location',
'unit_of_measurement': None,
}),
])
# ---
# name: test_device_trackers[zoe_50].2
list([
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Location',
'gps_accuracy': 0,
'icon': 'mdi:car',
'latitude': 48.1234567,
'longitude': 11.1234567,
'source_type': <SourceType.GPS: 'gps'>,
}),
'context': <ANY>,
'entity_id': 'device_tracker.reg_number_location',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'not_home',
}),
])
# ---

View File

@ -0,0 +1,299 @@
# serializer version: 1
# name: test_selects[captur_fuel]
list([
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'renault',
'VF1AAAAA555777123',
),
}),
'is_new': False,
'manufacturer': 'Renault',
'model': 'Captur ii',
'name': 'REG-NUMBER',
'name_by_user': None,
'suggested_area': None,
'sw_version': 'XJB1SU',
'via_device_id': None,
}),
])
# ---
# name: test_selects[captur_fuel].1
list([
])
# ---
# name: test_selects[captur_fuel].2
list([
])
# ---
# name: test_selects[captur_phev]
list([
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'renault',
'VF1AAAAA555777123',
),
}),
'is_new': False,
'manufacturer': 'Renault',
'model': 'Captur ii',
'name': 'REG-NUMBER',
'name_by_user': None,
'suggested_area': None,
'sw_version': 'XJB1SU',
'via_device_id': None,
}),
])
# ---
# name: test_selects[captur_phev].1
list([
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'options': list([
'always',
'always_charging',
'schedule_mode',
]),
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'select',
'entity_category': None,
'entity_id': 'select.reg_number_charge_mode',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:calendar-remove',
'original_name': 'Charge mode',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'charge_mode',
'unique_id': 'vf1aaaaa555777123_charge_mode',
'unit_of_measurement': None,
}),
])
# ---
# name: test_selects[captur_phev].2
list([
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Charge mode',
'icon': 'mdi:calendar-remove',
'options': list([
'always',
'always_charging',
'schedule_mode',
]),
}),
'context': <ANY>,
'entity_id': 'select.reg_number_charge_mode',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'always',
}),
])
# ---
# name: test_selects[zoe_40]
list([
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'renault',
'VF1AAAAA555777999',
),
}),
'is_new': False,
'manufacturer': 'Renault',
'model': 'Zoe',
'name': 'REG-NUMBER',
'name_by_user': None,
'suggested_area': None,
'sw_version': 'X101VE',
'via_device_id': None,
}),
])
# ---
# name: test_selects[zoe_40].1
list([
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'options': list([
'always',
'always_charging',
'schedule_mode',
]),
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'select',
'entity_category': None,
'entity_id': 'select.reg_number_charge_mode',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:calendar-remove',
'original_name': 'Charge mode',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'charge_mode',
'unique_id': 'vf1aaaaa555777999_charge_mode',
'unit_of_measurement': None,
}),
])
# ---
# name: test_selects[zoe_40].2
list([
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Charge mode',
'icon': 'mdi:calendar-remove',
'options': list([
'always',
'always_charging',
'schedule_mode',
]),
}),
'context': <ANY>,
'entity_id': 'select.reg_number_charge_mode',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'always',
}),
])
# ---
# name: test_selects[zoe_50]
list([
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'renault',
'VF1AAAAA555777999',
),
}),
'is_new': False,
'manufacturer': 'Renault',
'model': 'Zoe',
'name': 'REG-NUMBER',
'name_by_user': None,
'suggested_area': None,
'sw_version': 'X102VE',
'via_device_id': None,
}),
])
# ---
# name: test_selects[zoe_50].1
list([
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'options': list([
'always',
'always_charging',
'schedule_mode',
]),
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'select',
'entity_category': None,
'entity_id': 'select.reg_number_charge_mode',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': 'mdi:calendar-clock',
'original_name': 'Charge mode',
'platform': 'renault',
'supported_features': 0,
'translation_key': 'charge_mode',
'unique_id': 'vf1aaaaa555777999_charge_mode',
'unit_of_measurement': None,
}),
])
# ---
# name: test_selects[zoe_50].2
list([
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'REG-NUMBER Charge mode',
'icon': 'mdi:calendar-clock',
'options': list([
'always',
'always_charging',
'schedule_mode',
]),
}),
'context': <ANY>,
'entity_id': 'select.reg_number_charge_mode',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'schedule_mode',
}),
])
# ---

File diff suppressed because it is too large Load Diff

View File

@ -3,18 +3,14 @@ from collections.abc import Generator
from unittest.mock import patch from unittest.mock import patch
import pytest import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import STATE_UNKNOWN, Platform from homeassistant.const import STATE_UNKNOWN, Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers import device_registry as dr, entity_registry as er
from . import ( from . import check_device_registry, check_entities_no_data, check_entities_unavailable
check_device_registry,
check_entities,
check_entities_no_data,
check_entities_unavailable,
)
from .const import MOCK_VEHICLES from .const import MOCK_VEHICLES
pytestmark = pytest.mark.usefixtures("patch_renault_account", "patch_get_vehicles") pytestmark = pytest.mark.usefixtures("patch_renault_account", "patch_get_vehicles")
@ -31,21 +27,29 @@ def override_platforms() -> Generator[None, None, None]:
async def test_binary_sensors( async def test_binary_sensors(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ConfigEntry,
vehicle_type: str,
device_registry: dr.DeviceRegistry, device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry, entity_registry: er.EntityRegistry,
snapshot: SnapshotAssertion,
) -> None: ) -> None:
"""Test for Renault binary sensors.""" """Test for Renault binary sensors."""
await hass.config_entries.async_setup(config_entry.entry_id) await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
mock_vehicle = MOCK_VEHICLES[vehicle_type] # Ensure devices are correctly registered
check_device_registry(device_registry, mock_vehicle["expected_device"]) device_entries = dr.async_entries_for_config_entry(
device_registry, config_entry.entry_id
)
assert device_entries == snapshot
expected_entities = mock_vehicle[Platform.BINARY_SENSOR] # Ensure entities are correctly registered
assert len(entity_registry.entities) == len(expected_entities) entity_entries = er.async_entries_for_config_entry(
entity_registry, config_entry.entry_id
)
assert entity_entries == snapshot
check_entities(hass, entity_registry, expected_entities) # Ensure entity states are correct
states = [hass.states.get(ent.entity_id) for ent in entity_entries]
assert states == snapshot
@pytest.mark.usefixtures("fixtures_with_no_data") @pytest.mark.usefixtures("fixtures_with_no_data")

View File

@ -4,6 +4,7 @@ from unittest.mock import patch
import pytest import pytest
from renault_api.kamereon import schemas from renault_api.kamereon import schemas
from syrupy.assertion import SnapshotAssertion
from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN, SERVICE_PRESS from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN, SERVICE_PRESS
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
@ -30,21 +31,29 @@ def override_platforms() -> Generator[None, None, None]:
async def test_buttons( async def test_buttons(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ConfigEntry,
vehicle_type: str,
device_registry: dr.DeviceRegistry, device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry, entity_registry: er.EntityRegistry,
snapshot: SnapshotAssertion,
) -> None: ) -> None:
"""Test for Renault device trackers.""" """Test for Renault device trackers."""
await hass.config_entries.async_setup(config_entry.entry_id) await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
mock_vehicle = MOCK_VEHICLES[vehicle_type] # Ensure devices are correctly registered
check_device_registry(device_registry, mock_vehicle["expected_device"]) device_entries = dr.async_entries_for_config_entry(
device_registry, config_entry.entry_id
)
assert device_entries == snapshot
expected_entities = mock_vehicle[Platform.BUTTON] # Ensure entities are correctly registered
assert len(entity_registry.entities) == len(expected_entities) entity_entries = er.async_entries_for_config_entry(
entity_registry, config_entry.entry_id
)
assert entity_entries == snapshot
check_entities_no_data(hass, entity_registry, expected_entities, STATE_UNKNOWN) # Ensure entity states are correct
states = [hass.states.get(ent.entity_id) for ent in entity_entries]
assert states == snapshot
@pytest.mark.usefixtures("fixtures_with_no_data") @pytest.mark.usefixtures("fixtures_with_no_data")

View File

@ -3,18 +3,14 @@ from collections.abc import Generator
from unittest.mock import patch from unittest.mock import patch
import pytest import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import STATE_UNKNOWN, Platform from homeassistant.const import STATE_UNKNOWN, Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers import device_registry as dr, entity_registry as er
from . import ( from . import check_device_registry, check_entities_no_data, check_entities_unavailable
check_device_registry,
check_entities,
check_entities_no_data,
check_entities_unavailable,
)
from .const import MOCK_VEHICLES from .const import MOCK_VEHICLES
pytestmark = pytest.mark.usefixtures("patch_renault_account", "patch_get_vehicles") pytestmark = pytest.mark.usefixtures("patch_renault_account", "patch_get_vehicles")
@ -31,21 +27,29 @@ def override_platforms() -> Generator[None, None, None]:
async def test_device_trackers( async def test_device_trackers(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ConfigEntry,
vehicle_type: str,
device_registry: dr.DeviceRegistry, device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry, entity_registry: er.EntityRegistry,
snapshot: SnapshotAssertion,
) -> None: ) -> None:
"""Test for Renault device trackers.""" """Test for Renault device trackers."""
await hass.config_entries.async_setup(config_entry.entry_id) await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
mock_vehicle = MOCK_VEHICLES[vehicle_type] # Ensure devices are correctly registered
check_device_registry(device_registry, mock_vehicle["expected_device"]) device_entries = dr.async_entries_for_config_entry(
device_registry, config_entry.entry_id
)
assert device_entries == snapshot
expected_entities = mock_vehicle[Platform.DEVICE_TRACKER] # Ensure entities are correctly registered
assert len(entity_registry.entities) == len(expected_entities) entity_entries = er.async_entries_for_config_entry(
entity_registry, config_entry.entry_id
)
assert entity_entries == snapshot
check_entities(hass, entity_registry, expected_entities) # Ensure entity states are correct
states = [hass.states.get(ent.entity_id) for ent in entity_entries]
assert states == snapshot
@pytest.mark.usefixtures("fixtures_with_no_data") @pytest.mark.usefixtures("fixtures_with_no_data")

View File

@ -4,6 +4,7 @@ from unittest.mock import patch
import pytest import pytest
from renault_api.kamereon import schemas from renault_api.kamereon import schemas
from syrupy.assertion import SnapshotAssertion
from homeassistant.components.select import ( from homeassistant.components.select import (
ATTR_OPTION, ATTR_OPTION,
@ -15,12 +16,7 @@ from homeassistant.const import ATTR_ENTITY_ID, STATE_UNKNOWN, Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers import device_registry as dr, entity_registry as er
from . import ( from . import check_device_registry, check_entities_no_data, check_entities_unavailable
check_device_registry,
check_entities,
check_entities_no_data,
check_entities_unavailable,
)
from .const import MOCK_VEHICLES from .const import MOCK_VEHICLES
from tests.common import load_fixture from tests.common import load_fixture
@ -39,21 +35,29 @@ def override_platforms() -> Generator[None, None, None]:
async def test_selects( async def test_selects(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ConfigEntry,
vehicle_type: str,
device_registry: dr.DeviceRegistry, device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry, entity_registry: er.EntityRegistry,
snapshot: SnapshotAssertion,
) -> None: ) -> None:
"""Test for Renault selects.""" """Test for Renault selects."""
await hass.config_entries.async_setup(config_entry.entry_id) await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
mock_vehicle = MOCK_VEHICLES[vehicle_type] # Ensure devices are correctly registered
check_device_registry(device_registry, mock_vehicle["expected_device"]) device_entries = dr.async_entries_for_config_entry(
device_registry, config_entry.entry_id
)
assert device_entries == snapshot
expected_entities = mock_vehicle[Platform.SELECT] # Ensure entities are correctly registered
assert len(entity_registry.entities) == len(expected_entities) entity_entries = er.async_entries_for_config_entry(
entity_registry, config_entry.entry_id
)
assert entity_entries == snapshot
check_entities(hass, entity_registry, expected_entities) # Ensure entity states are correct
states = [hass.states.get(ent.entity_id) for ent in entity_entries]
assert states == snapshot
@pytest.mark.usefixtures("fixtures_with_no_data") @pytest.mark.usefixtures("fixtures_with_no_data")

View File

@ -1,22 +1,17 @@
"""Tests for Renault sensors.""" """Tests for Renault sensors."""
from collections.abc import Generator from collections.abc import Generator
from types import MappingProxyType
from unittest.mock import patch from unittest.mock import patch
import pytest import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_ENTITY_ID, STATE_UNKNOWN, Platform from homeassistant.const import STATE_UNKNOWN, Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers import device_registry as dr, entity_registry as er
from . import ( from . import check_device_registry, check_entities_no_data, check_entities_unavailable
check_device_registry, from .const import MOCK_VEHICLES
check_entities,
check_entities_no_data,
check_entities_unavailable,
)
from .const import ATTR_DEFAULT_DISABLED, MOCK_VEHICLES
pytestmark = pytest.mark.usefixtures("patch_renault_account", "patch_get_vehicles") pytestmark = pytest.mark.usefixtures("patch_renault_account", "patch_get_vehicles")
@ -28,46 +23,42 @@ def override_platforms() -> Generator[None, None, None]:
yield yield
def _check_and_enable_disabled_entities(
entity_registry: er.EntityRegistry, expected_entities: MappingProxyType
) -> None:
"""Ensure that the expected_entities are correctly disabled."""
for expected_entity in expected_entities:
if expected_entity.get(ATTR_DEFAULT_DISABLED):
entity_id = expected_entity[ATTR_ENTITY_ID]
registry_entry = entity_registry.entities.get(entity_id)
assert registry_entry, f"{entity_id} not found in registry"
assert registry_entry.disabled
assert registry_entry.disabled_by is er.RegistryEntryDisabler.INTEGRATION
entity_registry.async_update_entity(entity_id, **{"disabled_by": None})
@pytest.mark.usefixtures("fixtures_with_data") @pytest.mark.usefixtures("fixtures_with_data")
async def test_sensors( async def test_sensors(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ConfigEntry,
vehicle_type: str,
device_registry: dr.DeviceRegistry, device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry, entity_registry: er.EntityRegistry,
snapshot: SnapshotAssertion,
) -> None: ) -> None:
"""Test for Renault sensors.""" """Test for Renault sensors."""
await hass.config_entries.async_setup(config_entry.entry_id) await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
mock_vehicle = MOCK_VEHICLES[vehicle_type] # Ensure devices are correctly registered
check_device_registry(device_registry, mock_vehicle["expected_device"]) device_entries = dr.async_entries_for_config_entry(
device_registry, config_entry.entry_id
)
assert device_entries == snapshot
expected_entities = mock_vehicle[Platform.SENSOR] # Ensure entities are correctly registered
assert len(entity_registry.entities) == len(expected_entities) entity_entries = er.async_entries_for_config_entry(
entity_registry, config_entry.entry_id
)
assert entity_entries == snapshot
_check_and_enable_disabled_entities(entity_registry, expected_entities) # Some entities are disabled, enable them and reload before checking states
for ent in entity_entries:
entity_registry.async_update_entity(ent.entity_id, **{"disabled_by": None})
await hass.config_entries.async_reload(config_entry.entry_id) await hass.config_entries.async_reload(config_entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
check_entities(hass, entity_registry, expected_entities) # Ensure entity states are correct
states = [hass.states.get(ent.entity_id) for ent in entity_entries]
assert states == snapshot
@pytest.mark.usefixtures("fixtures_with_no_data") @pytest.mark.usefixtures("fixtures_with_no_data", "entity_registry_enabled_by_default")
async def test_sensor_empty( async def test_sensor_empty(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ConfigEntry,
@ -85,14 +76,12 @@ async def test_sensor_empty(
expected_entities = mock_vehicle[Platform.SENSOR] expected_entities = mock_vehicle[Platform.SENSOR]
assert len(entity_registry.entities) == len(expected_entities) assert len(entity_registry.entities) == len(expected_entities)
_check_and_enable_disabled_entities(entity_registry, expected_entities)
await hass.config_entries.async_reload(config_entry.entry_id)
await hass.async_block_till_done()
check_entities_no_data(hass, entity_registry, expected_entities, STATE_UNKNOWN) check_entities_no_data(hass, entity_registry, expected_entities, STATE_UNKNOWN)
@pytest.mark.usefixtures("fixtures_with_invalid_upstream_exception") @pytest.mark.usefixtures(
"fixtures_with_invalid_upstream_exception", "entity_registry_enabled_by_default"
)
async def test_sensor_errors( async def test_sensor_errors(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ConfigEntry,
@ -110,7 +99,6 @@ async def test_sensor_errors(
expected_entities = mock_vehicle[Platform.SENSOR] expected_entities = mock_vehicle[Platform.SENSOR]
assert len(entity_registry.entities) == len(expected_entities) assert len(entity_registry.entities) == len(expected_entities)
_check_and_enable_disabled_entities(entity_registry, expected_entities)
await hass.config_entries.async_reload(config_entry.entry_id) await hass.config_entries.async_reload(config_entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()