"""The tests for the climate component."""
import asyncio

from homeassistant.components.climate import SET_TEMPERATURE_SCHEMA
from tests.common import async_mock_service


@asyncio.coroutine
def test_set_temp_schema_no_req(hass, caplog):
    """Test the set temperature schema with missing required data."""
    domain = 'climate'
    service = 'test_set_temperature'
    schema = SET_TEMPERATURE_SCHEMA
    calls = async_mock_service(hass, domain, service, schema)

    data = {'operation_mode': 'test', 'entity_id': ['climate.test_id']}
    yield from hass.services.async_call(domain, service, data)
    yield from hass.async_block_till_done()

    assert len(calls) == 0
    assert 'ERROR' in caplog.text
    assert 'Invalid service data' in caplog.text


@asyncio.coroutine
def test_set_temp_schema(hass, caplog):
    """Test the set temperature schema with ok required data."""
    domain = 'climate'
    service = 'test_set_temperature'
    schema = SET_TEMPERATURE_SCHEMA
    calls = async_mock_service(hass, domain, service, schema)

    data = {
        'temperature': 20.0, 'operation_mode': 'test',
        'entity_id': ['climate.test_id']}
    yield from hass.services.async_call(domain, service, data)
    yield from hass.async_block_till_done()

    assert len(calls) == 1
    assert calls[-1].data == data
