"""Test the Snips component."""
import asyncio

from homeassistant.bootstrap import async_setup_component
from tests.common import async_fire_mqtt_message, async_mock_intent

EXAMPLE_MSG = """
{
    "input": "turn the lights green",
    "intent": {
        "intentName": "Lights",
        "probability": 1
    },
    "slots": [
        {
            "slotName": "light_color",
            "value": {
                "kind": "Custom",
                "value": "green"
            }
        }
    ]
}
"""


@asyncio.coroutine
def test_snips_call_action(hass, mqtt_mock):
    """Test calling action via Snips."""
    result = yield from async_setup_component(hass, "snips", {
        "snips": {},
    })
    assert result

    intents = async_mock_intent(hass, 'Lights')

    async_fire_mqtt_message(hass, 'hermes/nlu/intentParsed',
                            EXAMPLE_MSG)
    yield from hass.async_block_till_done()
    assert len(intents) == 1
    intent = intents[0]
    assert intent.platform == 'snips'
    assert intent.intent_type == 'Lights'
    assert intent.slots == {'light_color': {'value': 'green'}}
    assert intent.text_input == 'turn the lights green'