JJ_MKVMaker/test/smb_find_test.dart

51 lines
2.5 KiB
Dart

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/lan_scan.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/smb_settings.dart';
/// X-plore j: [SMB 서버 추가] 창의 [같은 망에서 찾기] - 진행 · 찾은 서버를 고르면 주소 (이름) 칸을 채움. 시험은 실제 망을 훑지 않는다 (가짜 찾기)
void main() {
tearDown(() => debugFindSmbServers = null);
testWidgets('찾기 → 고르면 주소 · 이름 칸 채움, 못 찾으면 안내', (tester) async {
tester.view.physicalSize = const Size(1000, 1200);
tester.view.devicePixelRatio = 1;
addTearDown(tester.view.reset);
var calls = 0;
var result = const [LanHost('192.168.0.9', 'nas.local'), LanHost('192.168.0.20', null)];
debugFindSmbServers = ({cancelled, onProgress}) async {
calls++;
onProgress?.call(254, 254);
return result;
};
final c = AppController(PlatformServices(mediaTool: ProcessMediaTool('x', 'y'), storage: DesktopStorageService()));
final key = GlobalKey<NavigatorState>();
await tester.pumpWidget(MaterialApp(navigatorKey: key, home: const Scaffold()));
editSmbServer(key.currentContext!, c);
await tester.pumpAndSettle();
expect(find.text('SMB 서버 추가'), findsOneWidget);
await tester.tap(find.text('같은 망에서 찾기'));
await tester.pumpAndSettle();
expect(calls, 1);
expect(find.text('같은 망의 SMB 서버'), findsOneWidget);
expect(find.text('nas.local'), findsOneWidget);
expect(find.text('192.168.0.20'), findsOneWidget, reason: '이름을 모르면 주소');
await tester.tap(find.text('nas.local'));
await tester.pumpAndSettle();
expect(find.widgetWithText(TextField, 'nas.local'), findsOneWidget, reason: '서버 주소 칸');
expect(find.widgetWithText(TextField, 'nas'), findsOneWidget, reason: '이름 칸 (비어 있었으면)');
// 못 찾음
result = const [];
await tester.tap(find.text('같은 망에서 찾기'));
await tester.pumpAndSettle();
expect(find.textContaining('찾지 못했습니다'), findsOneWidget);
await tester.tap(find.text('닫기'));
await tester.pumpAndSettle();
expect(find.text('SMB 서버 추가'), findsOneWidget, reason: '추가 창은 그대로');
});
}