From 4f13edcc058be7b49d9da806a9aafbeaa9be93f0 Mon Sep 17 00:00:00 2001 From: Martin Hjelmare Date: Thu, 4 Aug 2022 21:16:31 +0200 Subject: [PATCH] Test get time command --- tests/model/test_command.py | 54 +++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/tests/model/test_command.py b/tests/model/test_command.py index bb89976..83989bf 100644 --- a/tests/model/test_command.py +++ b/tests/model/test_command.py @@ -66,6 +66,60 @@ async def test_get_length_error( assert mock_reader.readuntil.call_count == 1 +@pytest.mark.parametrize( + "read, time_result", + [(b"8\r\n> ", 8), (b"\r\n> ", 0)], +) +async def test_get_time( + transport: tuple[AsyncMock, AsyncMock], + client_connected: Client, + read: list[bytes], + time_result: int, +) -> None: + """Test the get time command.""" + mock_reader, mock_writer = transport + mock_reader.readuntil.return_value = read + + output = await client_connected.get_time() + + assert mock_writer.write.call_count == 1 + assert mock_writer.write.call_args == call(b"get_time\n") + assert mock_reader.readuntil.call_count == 1 + assert output + assert output.time == time_result + + +@pytest.mark.parametrize( + "read, error, error_message", + [ + (b"> ", CommandParseError, "Could not get time."), + ( + b"unexpected\r\n> ", + CommandParseError, + "Could not get time.", + ), + ], +) +async def test_get_time_error( + transport: tuple[AsyncMock, AsyncMock], + client_connected: Client, + read: list[bytes], + error: Type[Exception], + error_message: str, +) -> None: + """Test the get time command errors.""" + mock_reader, mock_writer = transport + mock_reader.readuntil.return_value = read + + with pytest.raises(error) as err: + await client_connected.get_time() + + assert str(err.value) == error_message + assert mock_writer.write.call_count == 1 + assert mock_writer.write.call_args == call(b"get_time\n") + assert mock_reader.readuntil.call_count == 1 + + async def test_info_command( transport: tuple[AsyncMock, AsyncMock], client_connected: Client,