61 lines
2.7 KiB
Dart
61 lines
2.7 KiB
Dart
import 'dart:io';
|
|
|
|
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/wifi_share.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/wifi_share_page.dart';
|
|
|
|
/// 89: Wi-Fi 공유 화면 - 처음엔 꺼짐 · [켜기] 뒤 6자리 코드 · 주소 · 남은 시간 · [끄기] 로 꺼짐. 설정 파일은 쓰지 않는다 (저장소 없음)
|
|
void main() {
|
|
late Directory tmp;
|
|
|
|
setUp(() {
|
|
WifiShare.debugLoopbackOnly = true;
|
|
tmp = Directory.systemTemp.createTempSync('jj_wifipage_');
|
|
File('${tmp.path}${Platform.pathSeparator}a.txt').writeAsStringSync('a');
|
|
});
|
|
|
|
tearDown(() async {
|
|
await WifiShare.instance?.stop();
|
|
WifiShare.debugLoopbackOnly = false;
|
|
try {
|
|
tmp.deleteSync(recursive: true);
|
|
} catch (_) {}
|
|
});
|
|
|
|
testWidgets('꺼짐 → [켜기] → 코드 · 남은 시간 → [끄기] → 꺼짐', (tester) async {
|
|
final c = AppController(PlatformServices(mediaTool: ProcessMediaTool('x', 'y'), storage: DesktopStorageService()));
|
|
expect(c.settings.wifiShareMinutes, 30, reason: '처음 값 30분 (관리자 지시)');
|
|
// 폰 세로처럼 좁고 긴 화면 (아래 줄까지 다 그려지게)
|
|
tester.view.physicalSize = const Size(412, 1600);
|
|
tester.view.devicePixelRatio = 1;
|
|
addTearDown(tester.view.reset);
|
|
await tester.pumpWidget(MaterialApp(home: WifiSharePage(c: c, folder: tmp.path)));
|
|
expect(find.text('켜기'), findsOneWidget);
|
|
expect(find.text('30분 뒤'), findsOneWidget);
|
|
expect(WifiShare.instance, isNull, reason: '화면을 열기만 해서는 켜지지 않는다 (기본 꺼짐)');
|
|
|
|
await tester.tap(find.text('켜기'));
|
|
for (var i = 0; i < 20 && WifiShare.instance == null; i++) {
|
|
await tester.runAsync(() => Future<void>.delayed(const Duration(milliseconds: 50)));
|
|
await tester.pump();
|
|
}
|
|
await tester.pump();
|
|
final s = WifiShare.instance!;
|
|
expect(find.text(s.code), findsOneWidget);
|
|
expect(find.textContaining('분 뒤에 저절로 꺼집니다'), findsOneWidget);
|
|
expect(find.text('아직 접속한 기기가 없습니다'), findsOneWidget);
|
|
expect(c.settings.wifiShareFolder, tmp.path);
|
|
|
|
await tester.tap(find.text('끄기'));
|
|
await tester.runAsync(() => Future<void>.delayed(const Duration(milliseconds: 100)));
|
|
await tester.pump();
|
|
expect(WifiShare.instance, isNull);
|
|
expect(find.text('켜기'), findsOneWidget);
|
|
});
|
|
}
|