"""Tests for SpeedTest sensors."""
from unittest.mock import patch

from homeassistant.components import speedtestdotnet
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
from homeassistant.components.speedtestdotnet.const import DEFAULT_NAME, SENSOR_TYPES

from . import MOCK_RESULTS, MOCK_SERVERS, MOCK_STATES

from tests.common import MockConfigEntry


async def test_speedtestdotnet_sensors(hass):
    """Test sensors created for speedtestdotnet integration."""
    entry = MockConfigEntry(domain=speedtestdotnet.DOMAIN, data={})
    entry.add_to_hass(hass)

    with patch("speedtest.Speedtest") as mock_api:
        mock_api.return_value.get_best_server.return_value = MOCK_SERVERS[1][0]
        mock_api.return_value.results.dict.return_value = MOCK_RESULTS

        await hass.config_entries.async_setup(entry.entry_id)
        await hass.async_block_till_done()

    assert len(hass.states.async_entity_ids(SENSOR_DOMAIN)) == 3

    for sensor_type in SENSOR_TYPES:
        sensor = hass.states.get(
            f"sensor.{DEFAULT_NAME}_{SENSOR_TYPES[sensor_type][0]}"
        )
        assert sensor.state == MOCK_STATES[sensor_type]