WIP 시험: Total Commander 모양 F8 = 지우기 - 확인 창 [취소] 면 그대로, [휴지통으로] 면 (가짜) 휴지통으로 (28 지적) (검토 대기)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>next3
parent
cfed8fa355
commit
1396ba41c8
|
|
@ -26,6 +26,7 @@ import 'package:jj_mkvmaker/ui/storage_page.dart';
|
||||||
import 'package:jj_mkvmaker/ui/path_label.dart';
|
import 'package:jj_mkvmaker/ui/path_label.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
import 'support/fake_recycle_bin.dart';
|
import 'support/fake_recycle_bin.dart';
|
||||||
|
import 'package:jj_mkvmaker/platform/windows/recycle_bin.dart' show recycleBinForTest;
|
||||||
|
|
||||||
/// 다른 앱으로 열기를 기록만 하는 셸 (실제로 프로그램을 띄우지 않게)
|
/// 다른 앱으로 열기를 기록만 하는 셸 (실제로 프로그램을 띄우지 않게)
|
||||||
class _Shell extends NoopShell {
|
class _Shell extends NoopShell {
|
||||||
|
|
@ -1297,6 +1298,39 @@ void main() {
|
||||||
await calm(tester);
|
await calm(tester);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
testWidgets('83 (28 지적): Total Commander 모양 F8 = 지우기 - 확인 창 [취소] 면 그대로, [휴지통으로] 면 휴지통으로', (tester) async {
|
||||||
|
final bin = recycleBinForTest;
|
||||||
|
if (bin is! FakeRecycleBin) return markTestSkipped('실제 휴지통 (JJ_TEST_REAL_RECYCLE=1) 에서는 건너뜀');
|
||||||
|
if (!Platform.isWindows) return markTestSkipped('휴지통은 Windows 만 (Android 는 앱 휴지통 시험)');
|
||||||
|
final victim = File(p.join(left, 'tcdel.txt'))..writeAsStringSync('x');
|
||||||
|
c.settings.explorerStyle = 'totalcmd';
|
||||||
|
await open(tester);
|
||||||
|
await settle(tester, () => find.text('tcdel').evaluate().isNotEmpty);
|
||||||
|
await act(tester, () => tester.tap(find.text('tcdel')));
|
||||||
|
await settle(tester, () => false, rounds: 15);
|
||||||
|
|
||||||
|
// F8 → 확인 창 → [취소]: 아무것도 지우지 않음
|
||||||
|
await act(tester, () => tester.sendKeyEvent(LogicalKeyboardKey.f8));
|
||||||
|
await calm(tester);
|
||||||
|
expect(find.text('휴지통으로 보내기'), findsOneWidget);
|
||||||
|
expect(find.widgetWithText(FilledButton, '휴지통으로'), findsOneWidget, reason: '처음 값은 휴지통 (영구 삭제 아님)');
|
||||||
|
await tester.tap(find.text('취소').last);
|
||||||
|
await calm(tester);
|
||||||
|
expect(victim.existsSync(), isTrue);
|
||||||
|
expect(bin.items, isEmpty);
|
||||||
|
|
||||||
|
// F8 → [휴지통으로]: 휴지통 길로 (영구 삭제가 아님)
|
||||||
|
await act(tester, () => tester.sendKeyEvent(LogicalKeyboardKey.f8));
|
||||||
|
await calm(tester);
|
||||||
|
await act(tester, () => tester.tap(find.widgetWithText(FilledButton, '휴지통으로')));
|
||||||
|
await settle(tester, () => !victim.existsSync() && find.byType(SnackBar).evaluate().isNotEmpty);
|
||||||
|
expect(victim.existsSync(), isFalse);
|
||||||
|
expect(bin.items.keys, [victim.path], reason: '휴지통으로 보냄 (되돌릴 수 있음)');
|
||||||
|
expect(File(p.join(left, 'doc.txt')).existsSync(), isTrue, reason: '고른 것만');
|
||||||
|
expect(find.text('되돌리기'), findsOneWidget);
|
||||||
|
await calm(tester);
|
||||||
|
});
|
||||||
|
|
||||||
testWidgets('83: Windows 탐색기 모양 단축키 - Ctrl+A 모두 표시 · Ctrl+C 담기 · Ctrl+V 붙여넣기', (tester) async {
|
testWidgets('83: Windows 탐색기 모양 단축키 - Ctrl+A 모두 표시 · Ctrl+C 담기 · Ctrl+V 붙여넣기', (tester) async {
|
||||||
c.settings.explorerStyle = 'windows';
|
c.settings.explorerStyle = 'windows';
|
||||||
await open(tester);
|
await open(tester);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue