"""The tests for the panel_iframe component."""
import unittest
from unittest.mock import patch

from homeassistant import bootstrap
from homeassistant.components import frontend

from tests.common import get_test_home_assistant


class TestPanelIframe(unittest.TestCase):
    """Test the panel_iframe component."""

    def setup_method(self, method):
        """Setup things to be run when tests are started."""
        self.hass = get_test_home_assistant()
        frontend.PANELS = {}

    def teardown_method(self, method):
        """Stop everything that was started."""
        self.hass.stop()
        frontend.PANELS = {}

    def test_wrong_config(self):
        """Test setup with wrong configuration."""
        to_try = [
            {'invalid space': {
                'url': 'https://home-assistant.io'}},
            {'router': {
                'url': 'not-a-url'}}]

        for conf in to_try:
            assert not bootstrap.setup_component(
                self.hass, 'panel_iframe', {
                    'panel_iframe': conf
                })

    @patch.dict('homeassistant.components.frontend.FINGERPRINTS', {
        'panels/ha-panel-iframe.html': 'md5md5'})
    def test_correct_config(self):
        """Test correct config."""
        assert bootstrap.setup_component(
            self.hass, 'panel_iframe', {
                'panel_iframe': {
                    'router': {
                        'icon': 'mdi:network-wireless',
                        'title': 'Router',
                        'url': 'http://192.168.1.1',
                    },
                    'weather': {
                        'icon': 'mdi:weather',
                        'title': 'Weather',
                        'url': 'https://www.wunderground.com/us/ca/san-diego',
                    },
                },
            })

        # 5 dev tools + map are automatically loaded
        assert len(frontend.PANELS) == 8
        assert frontend.PANELS['router'] == {
            'component_name': 'iframe',
            'config': {'url': 'http://192.168.1.1'},
            'icon': 'mdi:network-wireless',
            'title': 'Router',
            'url': '/frontend/panels/iframe-md5md5.html',
            'url_path': 'router'
        }

        assert frontend.PANELS['weather'] == {
            'component_name': 'iframe',
            'config': {'url': 'https://www.wunderground.com/us/ca/san-diego'},
            'icon': 'mdi:weather',
            'title': 'Weather',
            'url': '/frontend/panels/iframe-md5md5.html',
            'url_path': 'weather',
        }