code-agent: implement issue 2
Approval-Correlation: 49036599e5df8e265ad6146109634e40
Plan-SHA256: 8b8371814cb3da5d7a9f2136053f543d1f524824ce1d3f1fe307cfe56c583784
Base-SHA: d2f8326a1a
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user