feat: 完善听力口语辅助状态记录、练习分块与复习抽查间隔机制

This commit is contained in:
shen
2026-09-23 18:33:22 -07:00
parent 6b42b7abc3
commit d740a9e19c
106 changed files with 2933 additions and 845 deletions
@@ -70,6 +70,32 @@ void main() {
expect(find.text('从更简单内容开始'), findsNothing);
});
testWidgets('self-reported basics move a learner who passes both checks', (
tester,
) async {
final state = AppState();
await tester.pumpWidget(
MaterialApp(
home: PlacementPage(state: state, onStart: () {}),
),
);
await tester.tap(find.text('能说一点'));
await tester.tap(find.text('开始 3 分钟定位'));
await tester.pumpAndSettle();
await tester.tap(find.text('你好,我叫 Mia,很高兴认识你。'));
await tester.pump();
await tester.tap(find.text('下一题'));
await tester.pumpAndSettle();
await tester.tap(find.text('现在不方便开口,跳过'));
await tester.pumpAndSettle();
await tester.enterText(find.byType(TextField), 'My name is Mia.');
await tester.tap(find.text('查看建议'));
await tester.pumpAndSettle();
expect(find.text('建议从 A0 第 3 课开始'), findsOneWidget);
await tester.tap(find.text('开始今天学习'));
expect(state.placementStartLessonId, 'a0-03');
});
testWidgets('scene page lists open and locked scenes', (tester) async {
final state = AppState()
..completedLessonIds.addAll(['a0-01', 'a0-02', 'a0-03', 'a0-04']);