80 lines
2.6 KiB
Dart
80 lines
2.6 KiB
Dart
import 'package:flutter/material.dart';
|
||
import 'package:flutter_test/flutter_test.dart';
|
||
import 'package:kouyu_english/core/app_state.dart';
|
||
import 'package:kouyu_english/core/seed_courses.dart';
|
||
import 'package:kouyu_english/features/dialogue/dialogue_flow.dart';
|
||
|
||
void main() {
|
||
testWidgets('Dialogue bottom translation chip displays latest partner translation', (
|
||
WidgetTester tester,
|
||
) async {
|
||
final state = AppState();
|
||
await tester.pumpWidget(
|
||
MaterialApp(
|
||
home: Scaffold(
|
||
body: DialoguePage(
|
||
state: state,
|
||
onFinished: (_) {},
|
||
isLessonDialogue: false,
|
||
),
|
||
),
|
||
),
|
||
);
|
||
await tester.pumpAndSettle();
|
||
|
||
// Initial partner prompt is displayed
|
||
expect(find.text('Hi! My name is Mia. What’s your name?'), findsOneWidget);
|
||
|
||
// Click the bottom "翻译" assist chip
|
||
final bottomTranslateChip = find.widgetWithText(ActionChip, '翻译');
|
||
expect(bottomTranslateChip, findsOneWidget);
|
||
await tester.tap(bottomTranslateChip);
|
||
await tester.pumpAndSettle();
|
||
|
||
// Hint banner displays the latest AI translation
|
||
expect(find.text('对方说:嗨!我叫 Mia。你叫什么名字?'), findsOneWidget);
|
||
|
||
// Message bubble also shows the inline translation
|
||
expect(find.text('嗨!我叫 Mia。你叫什么名字?'), findsOneWidget);
|
||
expect(find.text('隐藏翻译'), findsOneWidget);
|
||
|
||
// Tap "隐藏翻译" on the bubble to hide it
|
||
await tester.tap(find.text('隐藏翻译'));
|
||
await tester.pumpAndSettle();
|
||
|
||
expect(find.text('翻译'), findsWidgets); // Both the bottom chip and bubble button
|
||
});
|
||
|
||
testWidgets('Course lesson dialogue resolves translations correctly for lesson prompts', (
|
||
WidgetTester tester,
|
||
) async {
|
||
final state = AppState()..activeLessonId = 'a0-02';
|
||
await tester.pumpWidget(
|
||
MaterialApp(
|
||
home: Scaffold(
|
||
body: DialoguePage(
|
||
state: state,
|
||
onFinished: (_) {},
|
||
isLessonDialogue: true,
|
||
),
|
||
),
|
||
),
|
||
);
|
||
await tester.pumpAndSettle();
|
||
|
||
// Lesson a0-02 initial prompt
|
||
final expectedPrompt = a0Dialogues['a0-02']!.prompts.first;
|
||
expect(find.text(expectedPrompt), findsOneWidget);
|
||
|
||
// Tap bubble's "翻译" button
|
||
final bubbleTranslateBtn = find.text('翻译').first;
|
||
await tester.tap(bubbleTranslateBtn);
|
||
await tester.pumpAndSettle();
|
||
|
||
// Check translation is shown
|
||
final expectedTranslation = a0Dialogues['a0-02']!.translations.first;
|
||
expect(find.text(expectedTranslation), findsOneWidget);
|
||
expect(find.text('隐藏翻译'), findsOneWidget);
|
||
});
|
||
}
|