blob: 90a996fd68c8529eb79985653eee6fefac321348 [file] [log] [blame]
// Copyright 2019 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 'dart:io' show Directory;
import 'dart:async';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path_provider_platform_interface/path_provider_platform_interface.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
const String kTemporaryPath = 'temporaryPath';
const String kApplicationSupportPath = 'applicationSupportPath';
const String kDownloadsPath = 'downloadsPath';
const String kLibraryPath = 'libraryPath';
const String kApplicationDocumentsPath = 'applicationDocumentsPath';
const String kExternalCachePath = 'externalCachePath';
const String kExternalStoragePath = 'externalStoragePath';
void main() {
group('PathProvider', () {
TestWidgetsFlutterBinding.ensureInitialized();
setUp(() async {
PathProviderPlatform.instance = MockPathProviderPlatform();
// This is required because we manually register the Linux path provider when on the Linux platform.
// Will be removed when automatic registration of dart plugins is implemented.
// See this issue https://github.com/flutter/flutter/issues/52267 for details
disablePathProviderPlatformOverride = true;
});
test('getTemporaryDirectory', () async {
Directory result = await getTemporaryDirectory();
expect(result.path, kTemporaryPath);
});
test('getApplicationSupportDirectory', () async {
Directory result = await getApplicationSupportDirectory();
expect(result.path, kApplicationSupportPath);
});
test('getLibraryDirectory', () async {
Directory result = await getLibraryDirectory();
expect(result.path, kLibraryPath);
});
test('getApplicationDocumentsDirectory', () async {
Directory result = await getApplicationDocumentsDirectory();
expect(result.path, kApplicationDocumentsPath);
});
test('getExternalStorageDirectory', () async {
Directory result = await getExternalStorageDirectory();
expect(result.path, kExternalStoragePath);
});
test('getExternalCacheDirectories', () async {
List<Directory> result = await getExternalCacheDirectories();
expect(result.length, 1);
expect(result.first.path, kExternalCachePath);
});
test('getExternalStorageDirectories', () async {
List<Directory> result = await getExternalStorageDirectories();
expect(result.length, 1);
expect(result.first.path, kExternalStoragePath);
});
test('getDownloadsDirectory', () async {
Directory result = await getDownloadsDirectory();
expect(result.path, kDownloadsPath);
});
});
}
class MockPathProviderPlatform extends Mock
with MockPlatformInterfaceMixin
implements PathProviderPlatform {
Future<String> getTemporaryPath() async {
return kTemporaryPath;
}
Future<String> getApplicationSupportPath() async {
return kApplicationSupportPath;
}
Future<String> getLibraryPath() async {
return kLibraryPath;
}
Future<String> getApplicationDocumentsPath() async {
return kApplicationDocumentsPath;
}
Future<String> getExternalStoragePath() async {
return kExternalStoragePath;
}
Future<List<String>> getExternalCachePaths() async {
return <String>[kExternalCachePath];
}
Future<List<String>> getExternalStoragePaths({
StorageDirectory type,
}) async {
return <String>[kExternalStoragePath];
}
Future<String> getDownloadsPath() async {
return kDownloadsPath;
}
}