40 lines
1.8 KiB
Dart
40 lines
1.8 KiB
Dart
import 'dart:io';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:file_picker/file_picker.dart';
|
|
import 'package:ikar/core/utils/save_file_as.dart';
|
|
import 'package:ikar/core/utils/media_saver.dart';
|
|
|
|
class _Picker extends FilePicker {
|
|
final String? directory;
|
|
_Picker(this.directory);
|
|
@override
|
|
Future<String?> getDirectoryPath({String? dialogTitle, bool lockParentWindow = false, String? initialDirectory}) async => directory;
|
|
}
|
|
|
|
void main() {
|
|
TestWidgetsFlutterBinding.ensureInitialized();
|
|
test('save as preserves an existing file and copies bytes to a new name', () async {
|
|
final dir = await Directory.systemTemp.createTemp('qlyra_export_');
|
|
addTearDown(() async { FilePicker.platform = _Picker(null); await dir.delete(recursive: true); });
|
|
FilePicker.platform = _Picker(dir.path);
|
|
final source = File('${dir.path}/source.bin');
|
|
await source.writeAsBytes([1, 2, 3]);
|
|
final existing = File('${dir.path}/export.bin');
|
|
await existing.writeAsBytes([9]);
|
|
final result = await saveFileAs(source: source, fileName: 'export.bin', dialogTitle: 'Save');
|
|
expect(result.saved, isTrue);
|
|
expect(await File(result.path!).readAsBytes(), [1, 2, 3]);
|
|
expect(await existing.readAsBytes(), [9]);
|
|
FilePicker.platform = _Picker(null);
|
|
final cancelled = await saveFileAs(source: source, fileName: 'export.bin', dialogTitle: 'Save');
|
|
expect(cancelled.cancelled, isTrue);
|
|
expect(cancelled.saved, isFalse);
|
|
});
|
|
test('missing local media reports failure', () async {
|
|
final dir = await Directory.systemTemp.createTemp('qlyra_missing_');
|
|
addTearDown(() => dir.delete(recursive: true));
|
|
final result = await saveLocalMedia(File('${dir.path}/missing.mp4'), saveName: 'video.mp4', kind: SaveMediaKind.video);
|
|
expect(result.ok, isFalse);
|
|
});
|
|
}
|