Files
IKAR/test/media_export_test.dart
T

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);
});
}