51 lines
2.5 KiB
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: '추가 창은 그대로');
|
|
});
|
|
}
|