36 lines
1.8 KiB
Dart
36 lines
1.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:jj_mkvmaker/core/models.dart';
|
|
import 'package:jj_mkvmaker/ui/home/log_panel.dart';
|
|
import 'package:jj_mkvmaker/ui/home/video_list_view.dart';
|
|
|
|
/// home_page 를 나눈 모듈의 약속 (실제 위젯으로)
|
|
void main() {
|
|
Widget host(Widget w) => MaterialApp(home: Scaffold(body: SizedBox(width: 800, height: 300, child: w)));
|
|
|
|
testWidgets('약속 LogPanel · LogStrip: 새 기록이 맨 아래 · 비면 안내 · ✕ 는 닫기 · 한 줄을 누르면 열기', (t) async {
|
|
var closed = 0, opened = 0;
|
|
await t.pumpWidget(host(LogPanel(logs: const [], onClose: () => closed++)));
|
|
expect(find.textContaining('작업 기록이 아직 없습니다'), findsOneWidget);
|
|
await t.pumpWidget(host(LogPanel(logs: const ['첫 줄', '둘째 줄'], onClose: () => closed++)));
|
|
expect(find.textContaining('작업 기록이 아직 없습니다'), findsNothing);
|
|
expect(t.getTopLeft(find.text('둘째 줄')).dy, greaterThan(t.getTopLeft(find.text('첫 줄')).dy),
|
|
reason: '거꾸로 쌓아 새 기록이 아래 칸의 맨 아래 (reverse 목록)');
|
|
await t.tap(find.byTooltip('작업 기록 숨기기'));
|
|
expect(closed, 1);
|
|
await t.pumpWidget(host(LogStrip(last: '마지막 기록', onOpen: () => opened++)));
|
|
expect(find.text('마지막 기록'), findsOneWidget);
|
|
await t.tap(find.text('작업 기록 보기'));
|
|
expect(opened, 1);
|
|
});
|
|
|
|
testWidgets('약속 JobStatusIcon: 상태마다 다른 아이콘 (취소는 실패와 다름)', (t) async {
|
|
final icons = <IconData?>{};
|
|
for (final s in JobStatus.values) {
|
|
await t.pumpWidget(host(JobStatusIcon(s)));
|
|
icons.add(t.widget<Icon>(find.byType(Icon)).icon);
|
|
}
|
|
expect(icons.length, JobStatus.values.length);
|
|
});
|
|
}
|