"""Test fixtures for brother.""" from datetime import UTC, datetime from unittest.mock import AsyncMock, patch from brother import BrotherSensors import pytest from typing_extensions import Generator from homeassistant.components.brother.const import DOMAIN from homeassistant.const import CONF_HOST, CONF_TYPE from tests.common import MockConfigEntry BROTHER_DATA = BrotherSensors( belt_unit_remaining_life=97, belt_unit_remaining_pages=48436, black_counter=None, black_drum_counter=1611, black_drum_remaining_life=92, black_drum_remaining_pages=16389, black_ink_remaining=None, black_ink_status=None, black_ink=None, black_toner_remaining=75, black_toner_status=1, black_toner=80, bw_counter=709, color_counter=902, cyan_counter=None, cyan_drum_counter=1611, cyan_drum_remaining_life=92, cyan_drum_remaining_pages=16389, cyan_ink_remaining=None, cyan_ink_status=None, cyan_ink=None, cyan_toner_remaining=10, cyan_toner_status=1, cyan_toner=10, drum_counter=986, drum_remaining_life=92, drum_remaining_pages=11014, drum_status=1, duplex_unit_pages_counter=538, fuser_remaining_life=97, fuser_unit_remaining_pages=None, image_counter=None, laser_remaining_life=None, laser_unit_remaining_pages=48389, magenta_counter=None, magenta_drum_counter=1611, magenta_drum_remaining_life=92, magenta_drum_remaining_pages=16389, magenta_ink_remaining=None, magenta_ink_status=None, magenta_ink=None, magenta_toner_remaining=8, magenta_toner_status=2, magenta_toner=10, page_counter=986, pf_kit_1_remaining_life=98, pf_kit_1_remaining_pages=48741, pf_kit_mp_remaining_life=None, pf_kit_mp_remaining_pages=None, status="waiting", uptime=datetime(2024, 3, 3, 15, 4, 24, tzinfo=UTC), yellow_counter=None, yellow_drum_counter=1611, yellow_drum_remaining_life=92, yellow_drum_remaining_pages=16389, yellow_ink_remaining=None, yellow_ink_status=None, yellow_ink=None, yellow_toner_remaining=2, yellow_toner_status=2, yellow_toner=10, ) @pytest.fixture def mock_setup_entry() -> Generator[AsyncMock]: """Override async_setup_entry.""" with patch( "homeassistant.components.brother.async_setup_entry", return_value=True ) as mock_setup_entry: yield mock_setup_entry @pytest.fixture def mock_unload_entry() -> Generator[AsyncMock, None, None]: """Override async_unload_entry.""" with patch( "homeassistant.components.brother.async_unload_entry", return_value=True ) as mock_unload_entry: yield mock_unload_entry @pytest.fixture def mock_brother_client() -> Generator[AsyncMock, None, None]: """Mock Brother client.""" with ( patch("homeassistant.components.brother.Brother", autospec=True) as mock_client, patch( "homeassistant.components.brother.config_flow.Brother", new=mock_client, ), ): client = mock_client.create.return_value client.async_update.return_value = BROTHER_DATA client.serial = "0123456789" client.mac = "AA:BB:CC:DD:EE:FF" client.model = "HL-L2340DW" client.firmware = "1.2.3" yield client @pytest.fixture def mock_config_entry() -> MockConfigEntry: """Mock a config entry.""" return MockConfigEntry( domain=DOMAIN, title="HL-L2340DW 0123456789", unique_id="0123456789", data={CONF_HOST: "localhost", CONF_TYPE: "laser"}, )