"""Tests for the Tankerkoening integration."""

from __future__ import annotations

from unittest.mock import AsyncMock

import pytest
from syrupy import SnapshotAssertion

from homeassistant.components.tankerkoenig import DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component

from .const import PRICES_MISSING_FUELTYPE, STATION_MISSING_FUELTYPE

from tests.common import MockConfigEntry


@pytest.mark.usefixtures("setup_integration")
async def test_sensor(
    hass: HomeAssistant,
    tankerkoenig: AsyncMock,
    config_entry: MockConfigEntry,
    snapshot: SnapshotAssertion,
) -> None:
    """Test the tankerkoenig sensors."""

    state = hass.states.get("sensor.station_somewhere_street_1_super_e10")
    assert state
    assert state.state == "1.659"
    assert state.attributes == snapshot

    state = hass.states.get("sensor.station_somewhere_street_1_super")
    assert state
    assert state.state == "1.719"
    assert state.attributes == snapshot

    state = hass.states.get("sensor.station_somewhere_street_1_diesel")
    assert state
    assert state.state == "1.659"
    assert state.attributes == snapshot


async def test_sensor_missing_fueltype(
    hass: HomeAssistant,
    tankerkoenig: AsyncMock,
    config_entry: MockConfigEntry,
) -> None:
    """Test the tankerkoenig sensors."""
    tankerkoenig.station_details.return_value = STATION_MISSING_FUELTYPE
    tankerkoenig.prices.return_value = PRICES_MISSING_FUELTYPE

    config_entry.add_to_hass(hass)

    assert await async_setup_component(hass, DOMAIN, {})
    await hass.async_block_till_done()

    state = hass.states.get("sensor.station_somewhere_street_1_super_e10")
    assert state

    state = hass.states.get("sensor.station_somewhere_street_1_super")
    assert state

    state = hass.states.get("sensor.station_somewhere_street_1_diesel")
    assert not state