From 451cda6bfa91f97dfca739d8feea8176290dbc56 Mon Sep 17 00:00:00 2001 From: juk0de Date: Mon, 28 Aug 2023 14:24:24 +0200 Subject: [PATCH] added tests for 'chat.py' --- tests/test_chat.py | 86 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 tests/test_chat.py diff --git a/tests/test_chat.py b/tests/test_chat.py new file mode 100644 index 0000000..6fc5231 --- /dev/null +++ b/tests/test_chat.py @@ -0,0 +1,86 @@ +import pathlib +from io import StringIO +from unittest.mock import patch +from chatmastermind.tags import TagLine +from chatmastermind.message import Message, Question, Answer, Tag, MessageFilter +from chatmastermind.chat import Chat, terminal_width +from .test_main import CmmTestCase + + +class TestChat(CmmTestCase): + def setUp(self) -> None: + self.chat = Chat([]) + self.message1 = Message(Question('Question 1'), + Answer('Answer 1'), + {Tag('tag1')}, + file_path=pathlib.Path('0001.txt')) + self.message2 = Message(Question('Question 2'), + Answer('Answer 2'), + {Tag('tag2')}, + file_path=pathlib.Path('0002.txt')) + + def test_filter(self) -> None: + self.chat.add_msgs([self.message1, self.message2]) + self.chat.filter(MessageFilter(answer_contains='Answer 1')) + + self.assertEqual(len(self.chat.messages), 1) + self.assertEqual(self.chat.messages[0].question, 'Question 1') + + def test_sort(self) -> None: + self.chat.add_msgs([self.message2, self.message1]) + self.chat.sort() + self.assertEqual(self.chat.messages[0].question, 'Question 1') + self.assertEqual(self.chat.messages[1].question, 'Question 2') + self.chat.sort(reverse=True) + self.assertEqual(self.chat.messages[0].question, 'Question 2') + self.assertEqual(self.chat.messages[1].question, 'Question 1') + + def test_clear(self) -> None: + self.chat.add_msgs([self.message1]) + self.chat.clear() + self.assertEqual(len(self.chat.messages), 0) + + def test_add_msgs(self) -> None: + self.chat.add_msgs([self.message1, self.message2]) + + self.assertEqual(len(self.chat.messages), 2) + self.assertEqual(self.chat.messages[0].question, 'Question 1') + self.assertEqual(self.chat.messages[1].question, 'Question 2') + + @patch('sys.stdout', new_callable=StringIO) + def test_print(self, mock_stdout: StringIO) -> None: + self.chat.add_msgs([self.message1, self.message2]) + self.chat.print(paged=False) + expected_output = f"""{'-'*terminal_width()} +{Question.txt_header} +Question 1 +{Answer.txt_header} +Answer 1 +{'-'*terminal_width()} +{Question.txt_header} +Question 2 +{Answer.txt_header} +Answer 2 +""" + self.assertEqual(mock_stdout.getvalue(), expected_output) + + @patch('sys.stdout', new_callable=StringIO) + def test_print_with_tags_and_file(self, mock_stdout: StringIO) -> None: + self.chat.add_msgs([self.message1, self.message2]) + self.chat.print(paged=False, with_tags=True, with_file=True) + expected_output = f"""{'-'*terminal_width()} +{Question.txt_header} +Question 1 +{Answer.txt_header} +Answer 1 +{TagLine.prefix} tag1 +FILE: 0001.txt +{'-'*terminal_width()} +{Question.txt_header} +Question 2 +{Answer.txt_header} +Answer 2 +{TagLine.prefix} tag2 +FILE: 0002.txt +""" + self.assertEqual(mock_stdout.getvalue(), expected_output)