added tests for 'chat.py'
This commit is contained in:
parent
a7fa316487
commit
451cda6bfa
86
tests/test_chat.py
Normal file
86
tests/test_chat.py
Normal file
@ -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)
|
||||||
Loading…
x
Reference in New Issue
Block a user