JJ_MKVMaker/test/added_to_mkv_notice_test.dart

34 lines
2.1 KiB
Dart

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<NavigatorState>(), messenger = GlobalKey<ScaffoldMessengerState>();
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<void>(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: '그 동영상을 보이게');
});
}