From 4e4e6f56b0ff48b68d8b271abf1ecef92067ff7b Mon Sep 17 00:00:00 2001 From: juk0de Date: Mon, 28 Aug 2023 14:24:24 +0200 Subject: [PATCH] added tests for 'chatp.py' --- tests/test_chat.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 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..0950c18 --- /dev/null +++ b/tests/test_chat.py @@ -0,0 +1,64 @@ +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()}\n{Question.txt_header}\nQuestion 1\n{Answer.txt_header}\nAnswer 1\n\ +{'-'*terminal_width()}\n{Question.txt_header}\nQuestion 2\n{Answer.txt_header}\nAnswer 2\n" + 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.print(paged=False, with_tags=True, with_file=True) + expected_output = f"{'-'*terminal_width()}\n{Question.txt_header}\nQuestion 1\n{Answer.txt_header}\nAnswer 1\n\ +\n{TagLine.prefix} tag1\nFILE: 0001.txt\n{'-'*terminal_width()}\n{Question.txt_header}\nQuestion 2\n{Answer.txt_header}\n\ +Answer 2\n{TagLine.prefix} tag2\nFILE: 0002.txt\n" + self.assertEqual(mock_stdout.getvalue(), expected_output)