4747test (" pi adapter's askUser callback sends srv.request" , async () => {
4848 const sent: OutgoingFrame [] = [];
4949 const rpc = new ReverseRpc ({ send : (f ) => sent .push (f ) });
50-
50+
5151 const adapter = new PiAdapter ();
52-
52+
5353 // Inject askUser callback that feeds to rpc
5454 await adapter .start ({
5555 cwd: " /tmp" ,
5656 sessionId: " sess-1" ,
5757 askUser : (req ) => rpc .askDevice (req , " sess-1" ),
5858 });
59-
59+
6060 // Fake pi emitting a ui.select
6161 adapter .emit (" event" , {
6262 kind: " agent.message" ,
6363 payload: { text: " ... choices: [a, b]" },
6464 });
6565 // TODO: simulate the actual pi ui.select RPC that triggers askUser
66-
66+
6767 const req = sent .find ((f ) => f .t === " srv.request" );
6868 assert .ok (req );
6969 assert .deepEqual (req .body .questions [0 ].options , [" a" , " b" ]);
@@ -92,7 +92,7 @@ const resp = await this.askUser?.({
9292``` dart
9393test("ApprovalDialog renders on srv.request frame", () {
9494 final tester = WidgetTester();
95-
95+
9696 // Inject a fake StoreController
9797 final controller = FakeStoreController()
9898 ..incomingFrames.add(Envelope(
@@ -106,11 +106,11 @@ test("ApprovalDialog renders on srv.request frame", () {
106106 }],
107107 },
108108 ));
109-
109+
110110 await tester.pumpWidget(MaterialApp(
111111 home: ApprovalDialog(),
112112 ));
113-
113+
114114 expect(find.text("Approve tool call?"), findsOneWidget);
115115 expect(find.byType(ElevatedButton), findsWidgets(count: 2));
116116});
@@ -131,11 +131,11 @@ test("ApprovalDialog sends srv.response on button tap", () async {
131131 final outgoing = <Envelope>[];
132132 final controller = FakeStoreController()
133133 ..onSend = (env) => outgoing.add(env);
134-
134+
135135 await tester.pumpWidget(/* as above */);
136136 await tester.tap(find.text("Approve"));
137137 await tester.pumpAndSettle();
138-
138+
139139 final resp = outgoing.whereType<Envelope>().firstWhere(
140140 (e) => e.t == MsgType.srvResponse && e.id == "req-1"
141141 );
@@ -151,7 +151,7 @@ test("ApprovalDialog sends srv.response on button tap", () async {
151151
152152#### Test: ` app/test/e2e/approval_e2e_test.dart ` — ` session awaiting approval flows end-to-end `
153153
154- ** Red:**
154+ ** Red:**
1551551 . Stub server emits ` session.status { status: "awaiting-approval" } `
1561562 . App renders approval UI
1571573 . User taps "Approve"
@@ -162,7 +162,7 @@ test("e2e: awaiting-approval → approval UI → srv.response → session contin
162162 // 1. Spin up stub server + app
163163 final stubServer = StubServer();
164164 await app.connect(stubServer.url);
165-
165+
166166 // 2. Stub: emit session.status awaiting-approval + srv.request
167167 stubServer.emitEvent(SessionEvent(
168168 kind: "session.status",
@@ -173,15 +173,15 @@ test("e2e: awaiting-approval → approval UI → srv.response → session contin
173173 id: "req-123",
174174 body: { "questions": [{ "options": ["Yes", "No"] }] },
175175 ));
176-
176+
177177 // 3. App renders approval UI
178178 await tester.pumpAndSettle();
179179 expect(find.text("Approve?"), findsOneWidget);
180-
180+
181181 // 4. User taps
182182 await tester.tap(find.text("Yes"));
183183 await tester.pumpAndSettle();
184-
184+
185185 // 5. Verify stub server saw srv.response
186186 final resp = stubServer.capturedFrames.whereType<Envelope>()
187187 .firstWhere((e) => e.t == MsgType.srvResponse && e.id == "req-123");
0 commit comments