From 16c8b1efab870fb10aabfcf18a1c0714ec24d4f0 Mon Sep 17 00:00:00 2001 From: Noah Husby <32528627+noahhusby@users.noreply.github.com> Date: Fri, 25 Oct 2024 12:20:54 -0400 Subject: [PATCH] Add all models to diagnostics for Cambridge Audio (#129157) --- .../components/cambridge_audio/diagnostics.py | 16 +- .../snapshots/test_diagnostics.ambr | 189 ++++++++++++++++-- 2 files changed, 176 insertions(+), 29 deletions(-) diff --git a/homeassistant/components/cambridge_audio/diagnostics.py b/homeassistant/components/cambridge_audio/diagnostics.py index b4295e7c885..a670b1f32eb 100644 --- a/homeassistant/components/cambridge_audio/diagnostics.py +++ b/homeassistant/components/cambridge_audio/diagnostics.py @@ -2,20 +2,22 @@ from typing import Any -from homeassistant.const import CONF_HOST from homeassistant.core import HomeAssistant -from homeassistant.helpers.redact import async_redact_data from . import CambridgeAudioConfigEntry -TO_REDACT = {CONF_HOST} - async def async_get_config_entry_diagnostics( hass: HomeAssistant, entry: CambridgeAudioConfigEntry ) -> dict[str, Any]: """Return diagnostics for the provided config entry.""" client = entry.runtime_data - return async_redact_data( - {"info": client.info, "sources": client.sources}, TO_REDACT - ) + return { + "display": client.display.to_dict(), + "info": client.info.to_dict(), + "now_playing": client.now_playing.to_dict(), + "play_state": client.play_state.to_dict(), + "presets_list": client.preset_list.to_dict(), + "sources": [s.to_dict() for s in client.sources], + "update": client.update.to_dict(), + } diff --git a/tests/components/cambridge_audio/snapshots/test_diagnostics.ambr b/tests/components/cambridge_audio/snapshots/test_diagnostics.ambr index c554785006e..1ba9c4093f6 100644 --- a/tests/components/cambridge_audio/snapshots/test_diagnostics.ambr +++ b/tests/components/cambridge_audio/snapshots/test_diagnostics.ambr @@ -1,51 +1,196 @@ # serializer version: 1 # name: test_entry_diagnostics dict({ + 'display': dict({ + 'brightness': 'bright', + }), 'info': dict({ - '__type': "", - 'repr': "Info(name='Cambridge Audio CXNv2', model='CXNv2', timezone='America/Chicago', locale='en_GB', udn='02680b5c-1320-4d54-9f7c-3cfe915ad4c3', unit_id='0020c2d8', api_version='1.8')", + 'api_version': '1.8', + 'locale': 'en_GB', + 'model': 'CXNv2', + 'name': 'Cambridge Audio CXNv2', + 'timezone': 'America/Chicago', + 'udn': '02680b5c-1320-4d54-9f7c-3cfe915ad4c3', + 'unit_id': '0020c2d8', + }), + 'now_playing': dict({ + 'controls': list([ + 'play_pause', + 'track_next', + 'track_previous', + ]), + }), + 'play_state': dict({ + 'metadata': dict({ + 'album': "Greatest Hits: God's Favorite Band", + 'art_url': 'http://192.168.20.218:80/album-art-2d89?id=1:246', + 'artist': 'Green Day', + 'bitrate': None, + 'class_name': 'md.track', + 'codec': 'ALAC', + 'duration': 232, + 'encoding': None, + 'lossless': True, + 'mqa': 'none', + 'name': 'AirPlay', + 'radio_id': None, + 'sample_format': None, + 'sample_rate': 44100, + 'signal': None, + 'source': 'AIRPLAY', + 'station': None, + 'title': 'Holiday', + }), + 'mode_repeat': 'off', + 'mode_shuffle': 'off', + 'position': 179, + 'presettable': False, + 'state': 'play', + }), + 'presets_list': dict({ + 'end': 99, + 'max_presets': 99, + 'presets': list([ + dict({ + 'airable_radio_id': 5317566146608442, + 'art_url': 'https://static.airable.io/43/68/432868.png', + 'is_playing': False, + 'name': 'Chicago House Radio', + 'preset_class': 'stream.radio', + 'preset_id': 1, + 'state': 'OK', + 'type': 'Radio', + }), + dict({ + 'airable_radio_id': None, + 'art_url': 'https://i.scdn.co/image/ab67616d0000b27325a5a1ed28871e8e53e62d59', + 'is_playing': True, + 'name': 'Spotify: Good & Evil', + 'preset_class': 'stream.service.spotify', + 'preset_id': 2, + 'state': 'OK', + 'type': 'Spotify', + }), + dict({ + 'airable_radio_id': None, + 'art_url': None, + 'is_playing': False, + 'name': 'Unknown Preset Type', + 'preset_class': 'stream.unknown', + 'preset_id': 3, + 'state': 'OK', + 'type': 'Unknown', + }), + ]), + 'presettable': True, + 'start': 1, }), 'sources': list([ dict({ - '__type': "", - 'repr': "Source(id='IR', name='Internet Radio', default_name='Internet Radio', nameable=False, ui_selectable=False, description='Internet Radio', description_locale='Internet Radio', preferred_order=9)", + 'default_name': 'Internet Radio', + 'description': 'Internet Radio', + 'description_locale': 'Internet Radio', + 'id': 'IR', + 'name': 'Internet Radio', + 'nameable': False, + 'preferred_order': 9, + 'ui_selectable': False, }), dict({ - '__type': "", - 'repr': "Source(id='USB_AUDIO', name='USB Audio', default_name='USB Audio', nameable=True, ui_selectable=True, description='USB Audio', description_locale='USB Audio', preferred_order=1)", + 'default_name': 'USB Audio', + 'description': 'USB Audio', + 'description_locale': 'USB Audio', + 'id': 'USB_AUDIO', + 'name': 'USB Audio', + 'nameable': True, + 'preferred_order': 1, + 'ui_selectable': True, }), dict({ - '__type': "", - 'repr': "Source(id='SPDIF_COAX', name='D2', default_name='D2', nameable=True, ui_selectable=False, description='Digital Co-axial', description_locale='Digital Co-axial', preferred_order=3)", + 'default_name': 'D2', + 'description': 'Digital Co-axial', + 'description_locale': 'Digital Co-axial', + 'id': 'SPDIF_COAX', + 'name': 'D2', + 'nameable': True, + 'preferred_order': 3, + 'ui_selectable': False, }), dict({ - '__type': "", - 'repr': "Source(id='SPDIF_TOSLINK', name='D1', default_name='D1', nameable=True, ui_selectable=False, description='Digital Optical', description_locale='Digital Optical', preferred_order=2)", + 'default_name': 'D1', + 'description': 'Digital Optical', + 'description_locale': 'Digital Optical', + 'id': 'SPDIF_TOSLINK', + 'name': 'D1', + 'nameable': True, + 'preferred_order': 2, + 'ui_selectable': False, }), dict({ - '__type': "", - 'repr': "Source(id='MEDIA_PLAYER', name='Media Library', default_name='Media Library', nameable=False, ui_selectable=True, description='Media Player', description_locale='Media Player', preferred_order=10)", + 'default_name': 'Media Library', + 'description': 'Media Player', + 'description_locale': 'Media Player', + 'id': 'MEDIA_PLAYER', + 'name': 'Media Library', + 'nameable': False, + 'preferred_order': 10, + 'ui_selectable': True, }), dict({ - '__type': "", - 'repr': "Source(id='AIRPLAY', name='AirPlay', default_name='AirPlay', nameable=False, ui_selectable=True, description='AirPlay', description_locale='AirPlay', preferred_order=11)", + 'default_name': 'AirPlay', + 'description': 'AirPlay', + 'description_locale': 'AirPlay', + 'id': 'AIRPLAY', + 'name': 'AirPlay', + 'nameable': False, + 'preferred_order': 11, + 'ui_selectable': True, }), dict({ - '__type': "", - 'repr': "Source(id='SPOTIFY', name='Spotify', default_name='Spotify', nameable=False, ui_selectable=True, description='Spotify', description_locale='Spotify', preferred_order=6)", + 'default_name': 'Spotify', + 'description': 'Spotify', + 'description_locale': 'Spotify', + 'id': 'SPOTIFY', + 'name': 'Spotify', + 'nameable': False, + 'preferred_order': 6, + 'ui_selectable': True, }), dict({ - '__type': "", - 'repr': "Source(id='CAST', name='Chromecast built-in', default_name='Chromecast built-in', nameable=False, ui_selectable=True, description='Chromecast built-in', description_locale='Chromecast built-in', preferred_order=8)", + 'default_name': 'Chromecast built-in', + 'description': 'Chromecast built-in', + 'description_locale': 'Chromecast built-in', + 'id': 'CAST', + 'name': 'Chromecast built-in', + 'nameable': False, + 'preferred_order': 8, + 'ui_selectable': True, }), dict({ - '__type': "", - 'repr': "Source(id='ROON', name='Roon Ready', default_name='Roon Ready', nameable=False, ui_selectable=False, description='Roon Ready', description_locale='Roon Ready', preferred_order=5)", + 'default_name': 'Roon Ready', + 'description': 'Roon Ready', + 'description_locale': 'Roon Ready', + 'id': 'ROON', + 'name': 'Roon Ready', + 'nameable': False, + 'preferred_order': 5, + 'ui_selectable': False, }), dict({ - '__type': "", - 'repr': "Source(id='TIDAL', name='TIDAL Connect', default_name='TIDAL Connect', nameable=False, ui_selectable=False, description='TIDAL', description_locale='TIDAL', preferred_order=7)", + 'default_name': 'TIDAL Connect', + 'description': 'TIDAL', + 'description_locale': 'TIDAL', + 'id': 'TIDAL', + 'name': 'TIDAL Connect', + 'nameable': False, + 'preferred_order': 7, + 'ui_selectable': False, }), ]), + 'update': dict({ + 'early_update': False, + 'update_available': False, + 'updating': False, + }), }) # ---