def test_create_idle_time_no_number(self):
        parser = configparser.ConfigParser()
        parser.read_string('''[section]
                           url = anurl
                           idle_time = string''')

        with pytest.raises(ConfigurationError):
            KodiIdleTime.create('name', parser['section'])
    def test_create_idle_time_no_number(self) -> None:
        parser = configparser.ConfigParser()
        parser.read_string(
            """
            [section]
            url = anurl
            idle_time = string
            """
        )

        with pytest.raises(ConfigurationError):
            KodiIdleTime.create("name", parser["section"])
    def test_result_no_entry(self, mocker) -> None:
        mock_reply = mocker.MagicMock()
        mock_reply.json.return_value = {"id": 1, "jsonrpc": "2.0", "result": {}}
        mocker.patch("requests.Session.get", return_value=mock_reply)

        with pytest.raises(TemporaryCheckError):
            KodiIdleTime("foo", url="url", timeout=10, idle_time=42).check()
    def test_create_default_url(self) -> None:
        parser = configparser.ConfigParser()
        parser.read_string("""[section]""")

        check = KodiIdleTime.create("name", parser["section"])

        assert check._url.split("?")[0] == "http://localhost:8080/jsonrpc"
    def test_request_error(self, mocker) -> None:
        mocker.patch(
            "requests.Session.get", side_effect=requests.exceptions.RequestException()
        )

        with pytest.raises(TemporaryCheckError):
            KodiIdleTime("foo", url="url", timeout=10, idle_time=42).check()
    def test_no_result(self, mocker):
        mock_reply = mocker.MagicMock()
        mock_reply.json.return_value = {"id": 1, "jsonrpc": "2.0"}
        mocker.patch('requests.Session.get', return_value=mock_reply)

        with pytest.raises(TemporaryCheckError):
            KodiIdleTime('foo', url='url', timeout=10, idle_time=42).check()
    def test_inactive(self, mocker):
        mock_reply = mocker.MagicMock()
        mock_reply.json.return_value = {"id": 1, "jsonrpc": "2.0",
                                        "result": {
                                            "System.IdleTime(42)": True}}
        mocker.patch('requests.Session.get', return_value=mock_reply)

        assert KodiIdleTime('foo', url='url',
                            timeout=10, idle_time=42).check() is None
    def test_active(self, mocker) -> None:
        mock_reply = mocker.MagicMock()
        mock_reply.json.return_value = {
            "id": 1,
            "jsonrpc": "2.0",
            "result": {"System.IdleTime(42)": False},
        }
        mocker.patch("requests.Session.get", return_value=mock_reply)

        assert (
            KodiIdleTime("foo", url="url", timeout=10, idle_time=42).check() is not None
        )
    def test_create(self):
        parser = configparser.ConfigParser()
        parser.read_string('''[section]
                           url = anurl
                           timeout = 12
                           idle_time = 42''')

        check = KodiIdleTime.create('name', parser['section'])

        assert check._url.startswith('anurl')
        assert check._timeout == 12
        assert check._idle_time == 42
    def test_create(self) -> None:
        parser = configparser.ConfigParser()
        parser.read_string(
            """
            [section]
            url = anurl
            timeout = 12
            idle_time = 42
            """
        )

        check = KodiIdleTime.create("name", parser["section"])

        assert check._url.startswith("anurl")
        assert check._timeout == 12
        assert check._idle_time == 42
 def create_instance(self, name):
     return KodiIdleTime(name, url="url", timeout=10, idle_time=10)
    def test_request_error(self, mocker):
        mocker.patch('requests.Session.get',
                     side_effect=requests.exceptions.RequestException())

        with pytest.raises(TemporaryCheckError):
            KodiIdleTime('foo', url='url', timeout=10, idle_time=42).check()