Approval-Correlation: 49036599e5df8e265ad6146109634e40
Plan-SHA256: 8b8371814cb3da5d7a9f2136053f543d1f524824ce1d3f1fe307cfe56c583784
Base-SHA: d2f8326a1a
47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from textual.widgets import Input, Label
|
|
|
|
from chat_tui.app import ChatApp
|
|
|
|
|
|
class ChatAppTest(unittest.IsolatedAsyncioTestCase):
|
|
async def test_submitted_input_is_displayed_and_accumulated(self) -> None:
|
|
app = ChatApp()
|
|
async with app.run_test() as pilot:
|
|
input_widget = app.query_one("#user-input", Input)
|
|
input_widget.value = "첫 번째 입력"
|
|
await pilot.press("enter")
|
|
await pilot.pause()
|
|
|
|
input_widget.value = "두 번째 입력"
|
|
await pilot.press("enter")
|
|
await pilot.pause()
|
|
|
|
self.assertEqual(
|
|
app.submitted_inputs,
|
|
["첫 번째 입력", "두 번째 입력"],
|
|
)
|
|
displayed = [label.renderable for label in app.query("#conversation Label")]
|
|
self.assertEqual(displayed, ["첫 번째 입력", "두 번째 입력"])
|
|
self.assertEqual(input_widget.value, "")
|
|
|
|
async def test_empty_input_is_not_added(self) -> None:
|
|
app = ChatApp()
|
|
async with app.run_test() as pilot:
|
|
await pilot.press("enter")
|
|
await pilot.pause()
|
|
|
|
self.assertEqual(app.submitted_inputs, [])
|
|
self.assertEqual(len(app.query("#conversation Label")), 0)
|
|
|
|
async def test_escape_requests_application_exit(self) -> None:
|
|
app = ChatApp()
|
|
with patch.object(app, "exit") as exit_mock:
|
|
async with app.run_test() as pilot:
|
|
await pilot.press("escape")
|
|
await pilot.pause()
|
|
|
|
exit_mock.assert_called_once_with()
|