45 lines
2.4 KiB
Dart
45 lines
2.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:jj_mkvmaker/core/picked_list.dart';
|
|
import 'package:jj_mkvmaker/ui/jj_chip.dart';
|
|
|
|
/// W 공용 위젯 약속 (JjChip · withPicked): 아이콘 칩은 고르면 그 자리에 ✓ 만 (그림 위에 체크가 겹치지 않음 - 62ba78d) ·
|
|
/// 아이콘 없는 칩은 Material 처음 꼴 · multi 는 켜고 끄기. 위젯 하나에 대해 한 번만 둔다 (설계 7-2)
|
|
void main() {
|
|
Future<void> show(WidgetTester t, Widget chip) =>
|
|
t.pumpWidget(MaterialApp(home: Scaffold(body: Center(child: chip))));
|
|
|
|
testWidgets('아이콘 칩: 고르지 않으면 그림, 고르면 그 자리에 ✓ 만 (Material 체크 표는 끔)', (t) async {
|
|
await show(t, JjChip(label: '세로 9:16', icon: Icons.crop_portrait, selected: false, onSelected: (_) {}));
|
|
expect(find.byIcon(Icons.crop_portrait), findsOneWidget);
|
|
expect(t.widget<ChoiceChip>(find.byType(ChoiceChip)).showCheckmark, isFalse);
|
|
await show(t, JjChip(label: '세로 9:16', icon: Icons.crop_portrait, selected: true, onSelected: (_) {}));
|
|
expect(find.byIcon(Icons.crop_portrait), findsNothing);
|
|
expect(find.byIcon(Icons.check), findsOneWidget);
|
|
});
|
|
|
|
testWidgets('아이콘 없는 칩: Material 처음 꼴 (체크 표 켬) · 하나 고르기는 ChoiceChip, 여럿은 FilterChip', (t) async {
|
|
await show(t, JjChip(label: '큰 폴더', selected: true, onSelected: (_) {}));
|
|
expect(t.widget<ChoiceChip>(find.byType(ChoiceChip)).showCheckmark, isTrue);
|
|
bool? got;
|
|
await show(t, JjChip(multi: true, label: 'mp4', selected: false, onSelected: (v) => got = v));
|
|
expect(find.byType(FilterChip), findsOneWidget);
|
|
await t.tap(find.text('mp4'));
|
|
expect(got, isTrue);
|
|
});
|
|
|
|
testWidgets('누름 알림이 없으면 누를 수 없음', (t) async {
|
|
await show(t, const JjChip(label: '채우기', selected: false, onSelected: null));
|
|
expect(t.widget<ChoiceChip>(find.byType(ChoiceChip)).onSelected, isNull);
|
|
});
|
|
|
|
test('withPicked: 켜면 끝에 하나 (이미 있으면 끝으로), 끄면 빼기, 원래 목록은 그대로', () {
|
|
final list = ['jpg', 'png'];
|
|
expect(withPicked(list, 'gif', true), ['jpg', 'png', 'gif']);
|
|
expect(withPicked(list, 'jpg', true), ['png', 'jpg']);
|
|
expect(withPicked(list, 'jpg', false), ['png']);
|
|
expect(withPicked(list, 'bmp', false), ['jpg', 'png']);
|
|
expect(list, ['jpg', 'png']);
|
|
});
|
|
}
|