JJ_MKVMaker/test/bookmark_manager_page_contr...

34 lines
1.6 KiB
Dart

// bookmark_manager_page.dart 약속 시험: 실제 BookmarksController (시험 폴더의 파일) 로 입력 · 출력 · 없어진 폴더를 본다.
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:jj_mkvmaker/app/bookmarks_controller.dart';
import 'package:jj_mkvmaker/core/bookmarks.dart';
import 'package:jj_mkvmaker/ui/bookmark_manager_page.dart';
import 'package:path/path.dart' as p;
import 'support/temp_dirs.dart';
void main() {
deleteTempDirsAtEnd();
testWidgets('처음 폴더 · 주소 누르면 onOpen · 고른 폴더가 없어지면 즐겨찾기 표시줄로', (tester) async {
tester.view.physicalSize = const Size(1400, 900);
tester.view.devicePixelRatio = 1;
addTearDown(tester.view.reset);
final bm = BookmarksController(p.join(tempDirUntilEnd('jj_bmm_').path, 'bookmarks.json'));
final box = bm.addFolder('보관함', parentId: BookmarkTree.otherId);
bm.addLink('예제', 'https://ex.example', parentId: box.id);
final opened = <String>[];
await tester.pumpWidget(MaterialApp(home: BookmarkManagerPage(bm: bm, onOpen: opened.add, initialFolderId: box.id)));
expect(find.widgetWithText(ListTile, '예제'), findsOneWidget);
await tester.tap(find.widgetWithText(ListTile, '예제'));
await tester.pumpAndSettle();
expect(opened, ['https://ex.example']);
bm.remove(box.id);
await tester.pumpAndSettle();
expect(find.widgetWithText(ListTile, '예제'), findsNothing);
expect(find.widgetWithText(ListTile, 'YouTube'), findsOneWidget); // 즐겨찾기 표시줄의 기본 내용
});
}