blob: abd31dd9fcc61e218c98fe4708e6e4e88269495e [file] [log] [blame]
// Copyright 2020 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// @dart = 2.9
import 'dart:typed_data';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:integration_test/integration_test.dart';
import 'package:file_selector_platform_interface/file_selector_platform_interface.dart';
import 'package:file_selector_web/file_selector_web.dart';
import 'package:file_selector_web/src/dom_helper.dart';
void main() {
group('FileSelectorWeb', () {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
MockDomHelper mockDomHelper;
FileSelectorWeb plugin;
setUp(() {
mockDomHelper = MockDomHelper();
plugin = FileSelectorWeb(domHelper: mockDomHelper);
});
group('openFile', () {
final mockFile = createXFile('1001', 'identity.png');
testWidgets('works', (WidgetTester _) async {
final typeGroup = XTypeGroup(
label: 'images',
extensions: ['jpg', 'jpeg'],
mimeTypes: ['image/png'],
webWildCards: ['image/*'],
);
when(mockDomHelper.getFiles(
accept: '.jpg,.jpeg,image/png,image/*',
multiple: false,
)).thenAnswer((_) async => [mockFile]);
final file = await plugin.openFile(acceptedTypeGroups: [typeGroup]);
expect(file.name, mockFile.name);
expect(await file.length(), 4);
expect(await file.readAsString(), '1001');
expect(await file.lastModified(), isNotNull);
});
});
group('openFiles', () {
final mockFile1 = createXFile('123456', 'file1.txt');
final mockFile2 = createXFile('', 'file2.txt');
testWidgets('works', (WidgetTester _) async {
final typeGroup = XTypeGroup(
label: 'files',
extensions: ['.txt'],
);
when(mockDomHelper.getFiles(
accept: '.txt',
multiple: true,
)).thenAnswer((_) async => [mockFile1, mockFile2]);
final files = await plugin.openFiles(acceptedTypeGroups: [typeGroup]);
expect(files.length, 2);
expect(files[0].name, mockFile1.name);
expect(await files[0].length(), 6);
expect(await files[0].readAsString(), '123456');
expect(await files[0].lastModified(), isNotNull);
expect(files[1].name, mockFile2.name);
expect(await files[1].length(), 0);
expect(await files[1].readAsString(), '');
expect(await files[1].lastModified(), isNotNull);
});
});
});
}
class MockDomHelper extends Mock implements DomHelper {}
XFile createXFile(String content, String name) {
final data = Uint8List.fromList(content.codeUnits);
return XFile.fromData(data, name: name, lastModified: DateTime.now());
}