blob: 99f9fe0f0e3b26bcee21d2ce47fce17d20050432 [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.
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:file_selector_platform_interface/file_selector_platform_interface.dart';
import 'package:file_selector_platform_interface/src/method_channel/method_channel_file_selector.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
group('$MethodChannelFileSelector()', () {
MethodChannelFileSelector plugin = MethodChannelFileSelector();
final List<MethodCall> log = <MethodCall>[];
setUp(() {
plugin.channel.setMockMethodCallHandler((MethodCall methodCall) async {
log.add(methodCall);
return null;
});
log.clear();
});
group('#openFile', () {
test('passes the accepted type groups correctly', () async {
final group = XTypeGroup(
label: 'text',
extensions: ['.txt'],
mimeTypes: ['text/plain'],
macUTIs: ['public.text'],
);
final groupTwo = XTypeGroup(
label: 'image',
extensions: ['.jpg'],
mimeTypes: ['image/jpg'],
macUTIs: ['public.image'],
webWildCards: ['image/*']);
await plugin.openFile(acceptedTypeGroups: [group, groupTwo]);
expect(
log,
<Matcher>[
isMethodCall('openFile', arguments: <String, dynamic>{
'acceptedTypeGroups': [group.toJSON(), groupTwo.toJSON()],
'initialDirectory': null,
'confirmButtonText': null,
'multiple': false,
}),
],
);
});
test('passes initialDirectory correctly', () async {
await plugin.openFile(initialDirectory: "/example/directory");
expect(
log,
<Matcher>[
isMethodCall('openFile', arguments: <String, dynamic>{
'acceptedTypeGroups': null,
'initialDirectory': "/example/directory",
'confirmButtonText': null,
'multiple': false,
}),
],
);
});
test('passes confirmButtonText correctly', () async {
await plugin.openFile(confirmButtonText: "Open File");
expect(
log,
<Matcher>[
isMethodCall('openFile', arguments: <String, dynamic>{
'acceptedTypeGroups': null,
'initialDirectory': null,
'confirmButtonText': "Open File",
'multiple': false,
}),
],
);
});
});
group('#openFiles', () {
test('passes the accepted type groups correctly', () async {
final group = XTypeGroup(
label: 'text',
extensions: ['.txt'],
mimeTypes: ['text/plain'],
macUTIs: ['public.text'],
);
final groupTwo = XTypeGroup(
label: 'image',
extensions: ['.jpg'],
mimeTypes: ['image/jpg'],
macUTIs: ['public.image'],
webWildCards: ['image/*']);
await plugin.openFiles(acceptedTypeGroups: [group, groupTwo]);
expect(
log,
<Matcher>[
isMethodCall('openFile', arguments: <String, dynamic>{
'acceptedTypeGroups': [group.toJSON(), groupTwo.toJSON()],
'initialDirectory': null,
'confirmButtonText': null,
'multiple': true,
}),
],
);
});
test('passes initialDirectory correctly', () async {
await plugin.openFiles(initialDirectory: "/example/directory");
expect(
log,
<Matcher>[
isMethodCall('openFile', arguments: <String, dynamic>{
'acceptedTypeGroups': null,
'initialDirectory': "/example/directory",
'confirmButtonText': null,
'multiple': true,
}),
],
);
});
test('passes confirmButtonText correctly', () async {
await plugin.openFiles(confirmButtonText: "Open File");
expect(
log,
<Matcher>[
isMethodCall('openFile', arguments: <String, dynamic>{
'acceptedTypeGroups': null,
'initialDirectory': null,
'confirmButtonText': "Open File",
'multiple': true,
}),
],
);
});
});
group('#getSavePath', () {
test('passes the accepted type groups correctly', () async {
final group = XTypeGroup(
label: 'text',
extensions: ['.txt'],
mimeTypes: ['text/plain'],
macUTIs: ['public.text'],
);
final groupTwo = XTypeGroup(
label: 'image',
extensions: ['.jpg'],
mimeTypes: ['image/jpg'],
macUTIs: ['public.image'],
webWildCards: ['image/*']);
await plugin.getSavePath(acceptedTypeGroups: [group, groupTwo]);
expect(
log,
<Matcher>[
isMethodCall('getSavePath', arguments: <String, dynamic>{
'acceptedTypeGroups': [group.toJSON(), groupTwo.toJSON()],
'initialDirectory': null,
'suggestedName': null,
'confirmButtonText': null,
}),
],
);
});
test('passes initialDirectory correctly', () async {
await plugin.getSavePath(initialDirectory: "/example/directory");
expect(
log,
<Matcher>[
isMethodCall('getSavePath', arguments: <String, dynamic>{
'acceptedTypeGroups': null,
'initialDirectory': "/example/directory",
'suggestedName': null,
'confirmButtonText': null,
}),
],
);
});
test('passes confirmButtonText correctly', () async {
await plugin.getSavePath(confirmButtonText: "Open File");
expect(
log,
<Matcher>[
isMethodCall('getSavePath', arguments: <String, dynamic>{
'acceptedTypeGroups': null,
'initialDirectory': null,
'suggestedName': null,
'confirmButtonText': "Open File",
}),
],
);
});
group('#getDirectoryPath', () {
test('passes initialDirectory correctly', () async {
await plugin.getDirectoryPath(initialDirectory: "/example/directory");
expect(
log,
<Matcher>[
isMethodCall('getDirectoryPath', arguments: <String, dynamic>{
'initialDirectory': "/example/directory",
'confirmButtonText': null,
}),
],
);
});
test('passes confirmButtonText correctly', () async {
await plugin.getDirectoryPath(confirmButtonText: "Open File");
expect(
log,
<Matcher>[
isMethodCall('getDirectoryPath', arguments: <String, dynamic>{
'initialDirectory': null,
'confirmButtonText': "Open File",
}),
],
);
});
});
});
});
}