Files
gitea-agent-testbed/tests/test_app.py
T
code-agent cb53b4b98f code-agent: implement issue 2
Approval-Correlation: 49036599e5df8e265ad6146109634e40
Plan-SHA256: 8b8371814cb3da5d7a9f2136053f543d1f524824ce1d3f1fe307cfe56c583784
Base-SHA: d2f8326a1a
2000-01-01 00:00:00 +00:00

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()