import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:jj_mkvmaker/app/app_controller.dart'; import 'package:jj_mkvmaker/core/models.dart'; import 'package:jj_mkvmaker/platform/windows/desktop_storage_service.dart'; import 'package:jj_mkvmaker/platform/windows/process_media_tool.dart'; import 'package:jj_mkvmaker/services/platform_services.dart'; import 'package:jj_mkvmaker/ui/added_to_mkv_notice.dart'; /// 다운로드 줄이 "완료 시 자동 동영상 추가" 로 빠질 때 이유를 알리고 [보기] (931 관리자 판단) void main() { testWidgets('다 받은 동영상을 MKV 목록에 넣고 뺐다고 알림 · [보기] 는 MKV 화면의 그 동영상', (tester) async { final nav = GlobalKey(), messenger = GlobalKey(); final c = AppController(PlatformServices(mediaTool: ProcessMediaTool('x', 'y'), storage: DesktopStorageService())); final a = VideoItem(r'D:\dl\a.mp4'), b = VideoItem(r'D:\dl\받은 영상.mp4'); c.videos.addAll([a, b]); c.selected = a; await tester.pumpWidget(MaterialApp( navigatorKey: nav, scaffoldMessengerKey: messenger, home: const Scaffold(body: Text('MKV')))); unawaited(nav.currentState!.push(MaterialPageRoute(builder: (_) => const Scaffold(body: Text('다운로드 화면'))))); await tester.pumpAndSettle(); showAddedToMkvNotice(messenger, nav, c, title: '받은 영상', files: [r'D:\dl\받은 영상.mp4'], added: 1); await tester.pump(const Duration(milliseconds: 800)); await tester.pump(const Duration(seconds: 1)); // 알림이 다 올라올 때까지 expect(find.text('다 받은 받은 영상 을 MKV 목록에 넣고 다운로드 목록에서 뺐습니다 (받은 파일은 그대로)'), findsOneWidget); await tester.tap(find.byType(SnackBarAction).hitTestable()); // 화면마다 Scaffold 가 있어 보이는 쪽 await tester.pumpAndSettle(); expect(find.text('다운로드 화면'), findsNothing, reason: 'MKV 화면 (맨 처음) 으로'); expect(c.selected, b, reason: '그 동영상을 보이게'); }); }