import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:jj_mkvmaker/app/app_controller.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/startup/app_start.dart'; import 'package:jj_mkvmaker/startup/startup_helpers.dart'; /// main.dart 를 나눈 모듈의 약속 (Windows · Android 가 같이 쓰는 다운로드 연결) void main() { AppController ctl() => AppController(PlatformServices(mediaTool: ProcessMediaTool('x', 'y'), storage: DesktopStorageService())); test('약속 createDownloads: 다운로드 목록이 설정 · 편집 목록 · 작업 기록에 이어진다', () async { final c = ctl(); final d = createDownloads(c, messengerKey: GlobalKey(), navigatorKey: GlobalKey()); var refreshed = 0; d.addListener(() => refreshed++); await d.setAutoAdd!(false); expect([c.settings.download.addFinished, refreshed], [false, 1], reason: '다 받은 것 넣기 끄기 → 설정 · 목록 다시 그림'); c.settings.network.mode = 'custom'; await d.useSystemDns!(); expect([c.settings.network.mode, refreshed], ['system', 2]); d.log!('다운로드 기록'); expect(c.logs.last, endsWith('다운로드 기록')); expect(await d.addToEditList!(const []), 0, reason: '편집 목록 넣기는 AppController.addDownloaded'); }); test('약속 lastWorkText: 하던 작업, 없으면 마지막 기록 (시각 뺌), 그것도 없으면 "없음"', () { final c = ctl(); expect(lastWorkText(c), '없음'); c.note('MKV 만들기 끝\n자세히'); expect(lastWorkText(c), 'MKV 만들기 끝'); c.currentJob = 'AI 자막: a.mp4'; expect(lastWorkText(c), 'AI 자막: a.mp4'); }); }