Commit 82e13c27 authored by Noel Gordon's avatar Noel Gordon Committed by Commit Bot

Closure compile providers_model_unittest

 - use let and const and add doc comment annotations.
 - update LoadTimeData fake to include DRIVE_OFFLINE_COLLECTION_LABEL
   and DRIVE_SHARED_WITH_ME_COLLECTION_LABEL to avoid JS exceptions
   about them being missing / undefined when running the unittest.
 - rm duplicate NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION definition.
 - use VolumeManagerCommon.Source types rather than bare strings.
 - create & install mock chrome.fileManagerPrivate.
 - create & install mock VolumeManager.
 - run JS formatter over the code.

Bug: 905933
Change-Id: I7dabbb8ff72f79d290eaeffcb941280715f93660
Reviewed-on: https://chromium-review.googlesource.com/c/1343397
Commit-Queue: Noel Gordon <noel@chromium.org>
Reviewed-by: default avatarStuart Langley <slangley@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609487}
parent 03cf5921
......@@ -178,8 +178,7 @@ IN_PROC_BROWSER_TEST_F(FileManagerJsTest, ImageOrientation) {
}
IN_PROC_BROWSER_TEST_F(FileManagerJsTest, ProvidersModel) {
RunTest(base::FilePath(
FILE_PATH_LITERAL("foreground/js/providers_model_unittest.html")));
RunGeneratedTest("/foreground/js/providers_model_unittest.html");
}
IN_PROC_BROWSER_TEST_F(FileManagerJsTest, FilesTooltip) {
......
......@@ -540,6 +540,16 @@ js_library("providers_model") {
]
}
js_unittest("providers_model_unittest") {
deps = [
":providers_model",
"//ui/file_manager/base/js:mock_chrome",
"//ui/file_manager/base/js:test_error_reporting",
"//ui/file_manager/file_manager/background/js:mock_volume_manager",
"//ui/webui/resources/js:load_time_data",
]
}
js_library("quick_view_controller") {
deps = [
":dialog_type",
......@@ -674,6 +684,7 @@ js_library("webui_command_extender") {
js_unit_tests("unit_tests") {
deps = [
":file_list_model_unittest",
":providers_model_unittest",
":thumbnail_loader_unittest",
]
}
<!DOCTYPE html>
<!-- Copyright 2015 The Chromium Authors. All rights reserved.
-- Use of this source code is governed by a BSD-style license that can be
-- found in the LICENSE file.
-->
<html>
<body>
<script src="../../../../../ui/webui/resources/js/cr.js"></script>
<script src="../../../../../ui/webui/resources/js/cr/event_target.js"></script>
<script src="../../../../../ui/webui/resources/js/cr/ui.js"></script>
<script src="../../../../../ui/webui/resources/js/cr/ui/array_data_model.js"></script>
<script src="../../../../../ui/webui/resources/js/load_time_data.js"></script>
<script src="../../common/js/mock_entry.js"></script>
<script src="../../../base/js/test_error_reporting.js"></script>
<script src="../../../base/js/mock_chrome.js"></script>
<script src="../../common/js/unittest_util.js"></script>
<script src="../../common/js/files_app_entry_types.js"></script>
<script src="../../common/js/util.js"></script>
<script src="../../../base/js/volume_manager_types.js"></script>
<script src="../../background/js/volume_info_impl.js"></script>
<script src="../../background/js/volume_info_list_impl.js"></script>
<script src="../../background/js/volume_manager_factory.js"></script>
<script src="../../background/js/volume_manager_impl.js"></script>
<script src="../../background/js/volume_manager_util.js"></script>
<script src="../../background/js/mock_volume_manager.js"></script>
<script src="providers_model.js"></script>
<script src="providers_model_unittest.js"></script>
</body>
</html>
......@@ -2,214 +2,248 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Set up string assets.
/**
* Load time data.
* @type {Object}
*/
loadTimeData.data = {
DRIVE_DIRECTORY_LABEL: 'My Drive',
DOWNLOADS_DIRECTORY_LABEL: 'Downloads'
DOWNLOADS_DIRECTORY_LABEL: 'Downloads',
DRIVE_DIRECTORY_LABEL: 'Google Drive',
DRIVE_MY_DRIVE_LABEL: 'My Drive',
DRIVE_OFFLINE_COLLECTION_LABEL: 'Offline',
DRIVE_SHARED_WITH_ME_COLLECTION_LABEL: 'Shared with me',
};
// A providing extension which has mounted a file system, and doesn't support
// multiple mounts.
var MOUNTED_SINGLE_PROVIDING_EXTENSION = {
/**
* Providing extension which has a mounted file system and doesn't support
* multiple mounts.
* @type {Object}
*/
const MOUNTED_SINGLE_PROVIDING_EXTENSION = {
name: 'mounted-single-extension-name',
source: VolumeManagerCommon.Source.NETWORK,
providerId: 'mounted-single-provider-id',
iconSet: {
icon16x16Url: 'chrome://mounted-single-extension-id-16.jpg',
icon32x32Url: 'chrome://mounted-single-extension-id-32.jpg'
icon32x32Url: 'chrome://mounted-single-extension-id-32.jpg',
},
name: 'mounted-single-extension-name',
configurable: false,
watchable: true,
multipleMounts: false,
source: 'network'
};
// A providing extension which has not mounted a file system, and doesn't
// support multiple mounts.
var NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION = {
providerId: 'not-mounted-single-provider-id',
iconSet: {
icon16x16Url: 'chrome://not-mounted-single-extension-id-16.jpg',
icon32x32Url: 'chrome://not-mounted-single-extension-id-32.jpg'
},
/**
* Providing extension which has a not-mounted file system and doesn't support
* multiple mounts.
* @type {Object}
*/
const NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION = {
name: 'not-mounted-single-extension-name',
configurable: false,
watchable: true,
multipleMounts: false,
source: 'network'
};
// A providing extension which has not mounted a file system, and doesn't
// support multiple mounts.
var NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION = {
source: VolumeManagerCommon.Source.NETWORK,
providerId: 'not-mounted-single-provider-id',
iconSet: {
icon16x16Url: 'chrome://not-mounted-single-extension-id-16.jpg',
icon32x32Url: 'chrome://not-mounted-single-extension-id-32.jpg'
icon32x32Url: 'chrome://not-mounted-single-extension-id-32.jpg',
},
name: 'not-mounted-single-extension-name',
configurable: false,
watchable: true,
multipleMounts: false,
source: 'network'
};
// A providing extension which has mounted a file system and supports mounting
// more.
var MOUNTED_MULTIPLE_PROVIDING_EXTENSION = {
/**
* Providing extension which has a mounted file system and supports multiple
* mounts.
* @type {Object}
*/
const MOUNTED_MULTIPLE_PROVIDING_EXTENSION = {
name: 'mounted-multiple-extension-name',
source: VolumeManagerCommon.Source.NETWORK,
providerId: 'mounted-multiple-provider-id',
iconSet: {
icon16x16Url: 'chrome://mounted-multiple-extension-id-16.jpg',
icon32x32Url: 'chrome://mounted-multiple-extension-id-32.jpg'
icon32x32Url: 'chrome://mounted-multiple-extension-id-32.jpg',
},
name: 'mounted-multiple-extension-name',
configurable: true,
watchable: false,
multipleMounts: true,
source: 'network'
};
// A providing extension which has not mounted a file system but it's of "file"
// source. Such providers do mounting via file handlers.
var NOT_MOUNTED_FILE_PROVIDING_EXTENSION = {
/**
* Providing extension which has a not-mounted file system of FILE source.
* Such providers are mounted via file handlers.
* @type {Object}
*/
const NOT_MOUNTED_FILE_PROVIDING_EXTENSION = {
name: 'file-extension-name',
source: VolumeManagerCommon.Source.FILE,
providerId: 'file-provider-id',
iconSet: {
icon16x16Url: 'chrome://file-extension-id-16.jpg',
icon32x32Url: 'chrome://file-extension-id-32.jpg'
icon32x32Url: 'chrome://file-extension-id-32.jpg',
},
name: 'file-extension-name',
configurable: false,
watchable: true,
multipleMounts: true,
source: 'file'
};
// A providing extension which has not mounted a file system but it's of
// "device" source. Such providers are not mounted by user, but automatically
// when the device is attached.
var NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION = {
/**
* Providing extension which has a not-mounted file system of DEVICE source.
* Such providers are not mounted by users: they automatically mount when the
* DEVICE is attached.
* @type {Object}
*/
const NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION = {
name: 'device-extension-name',
source: VolumeManagerCommon.Source.DEVICE,
providerId: 'device-provider-id',
iconSet: {
icon16x16Url: 'chrome://device-extension-id-16.jpg',
icon32x32Url: 'chrome://device-extension-id-32.jpg'
icon32x32Url: 'chrome://device-extension-id-32.jpg',
},
name: 'device-extension-name',
configurable: false,
watchable: true,
multipleMounts: true,
source: 'device'
};
var volumeManager = null;
function addProvidedVolume(volumeManager, providerId, volumeId) {
var fileSystem = new MockFileSystem(volumeId, 'filesystem:' + volumeId);
let fileSystem = new MockFileSystem(volumeId, 'filesystem:' + volumeId);
fileSystem.entries['/'] = new MockDirectoryEntry(fileSystem, '');
var volumeInfo = new VolumeInfoImpl(
let volumeInfo = new VolumeInfoImpl(
VolumeManagerCommon.VolumeType.PROVIDED, volumeId, fileSystem,
'', // error
'', // deviceType
'', // devicePath
false, // isReadonly
false, // isReadonlyRemovableDevice
{isCurrentProfile: true, displayName: ''}, // profile
'', // label
providerId, // providerId
false, // hasMedia
false, // configurable
false, // watchable
'network', // source
'', // diskFileSystemType
{}); // iconSet
'', // error
'', // deviceType
'', // devicePath
false, // isReadonly
false, // isReadonlyRemovableDevice
{isCurrentProfile: true, displayName: ''}, // profile
'', // label
providerId, // providerId
false, // hasMedia
false, // configurable
false, // watchable
VolumeManagerCommon.Source.NETWORK, // source
VolumeManagerCommon.FileSystemType.UNKNOWN, // diskFileSystemType
{}); // iconSet
volumeManager.volumeInfoList.add(volumeInfo);
}
function setUp() {
// Create a dummy API for fetching a list of providers.
// TODO(mtomasz): Add some native (non-extension) providers.
chrome.fileManagerPrivate = {
getProviders: function(callback) {
callback([MOUNTED_SINGLE_PROVIDING_EXTENSION,
NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION,
MOUNTED_MULTIPLE_PROVIDING_EXTENSION,
NOT_MOUNTED_FILE_PROVIDING_EXTENSION,
NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION]);
}
// Create and install a mock fileManagerPrivate API for fetching the list of
// providers. TODO(mtomasz): Add some native (non-extension) providers.
let mockChrome = {
fileManagerPrivate: {
getProviders: function(callback) {
callback([
MOUNTED_SINGLE_PROVIDING_EXTENSION,
NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION,
MOUNTED_MULTIPLE_PROVIDING_EXTENSION,
NOT_MOUNTED_FILE_PROVIDING_EXTENSION,
NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION
]);
},
},
};
mockChrome.runtime = {};
installMockChrome(mockChrome);
new MockCommandLinePrivate();
chrome.runtime = {};
// Create a dummy volume manager.
volumeManager = new MockVolumeManager();
addProvidedVolume(
volumeManager, MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId, 'volume-1');
addProvidedVolume(
volumeManager, MOUNTED_MULTIPLE_PROVIDING_EXTENSION.providerId,
'volume-2');
// Create and install a volume manager.
let volumeManager = new MockVolumeManager();
MockVolumeManager.installMockSingleton(volumeManager);
// Add provided test volumes.
const single = MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId;
addProvidedVolume(volumeManager, single, 'volume-1');
const multiple = MOUNTED_MULTIPLE_PROVIDING_EXTENSION.providerId;
addProvidedVolume(volumeManager, multiple, 'volume-2');
}
function testGetInstalledProviders(callback) {
var model = new ProvidersModel(volumeManager);
reportPromise(
model.getInstalledProviders().then(function(providers) {
assertEquals(5, providers.length);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId,
providers[0].providerId);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.iconSet, providers[0].iconSet);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.name, providers[0].name);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.configurable,
providers[0].configurable);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.watchable,
providers[0].watchable);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.multipleMounts,
providers[0].multipleMounts);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.source, providers[0].source);
assertEquals(
NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId,
providers[1].providerId);
assertEquals(
MOUNTED_MULTIPLE_PROVIDING_EXTENSION.providerId,
providers[2].providerId);
assertEquals(
NOT_MOUNTED_FILE_PROVIDING_EXTENSION.providerId,
providers[3].providerId);
assertEquals(
NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION.providerId,
providers[4].providerId);
assertEquals(
NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION.iconSet,
providers[1].iconSet);
assertEquals(
MOUNTED_MULTIPLE_PROVIDING_EXTENSION.iconSet, providers[2].iconSet);
assertEquals(
NOT_MOUNTED_FILE_PROVIDING_EXTENSION.iconSet, providers[3].iconSet);
assertEquals(
NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION.iconSet,
providers[4].iconSet);
}),
volumeManagerFactory.getInstance()
.then(function(volumeManager) {
let model = new ProvidersModel(volumeManager);
return model.getInstalledProviders();
})
.then(function(providers) {
assertEquals(5, providers.length);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId,
providers[0].providerId);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.iconSet,
providers[0].iconSet);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.name, providers[0].name);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.configurable,
providers[0].configurable);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.watchable,
providers[0].watchable);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.multipleMounts,
providers[0].multipleMounts);
assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.source, providers[0].source);
assertEquals(
NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId,
providers[1].providerId);
assertEquals(
MOUNTED_MULTIPLE_PROVIDING_EXTENSION.providerId,
providers[2].providerId);
assertEquals(
NOT_MOUNTED_FILE_PROVIDING_EXTENSION.providerId,
providers[3].providerId);
assertEquals(
NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION.providerId,
providers[4].providerId);
assertEquals(
NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION.iconSet,
providers[1].iconSet);
assertEquals(
MOUNTED_MULTIPLE_PROVIDING_EXTENSION.iconSet,
providers[2].iconSet);
assertEquals(
NOT_MOUNTED_FILE_PROVIDING_EXTENSION.iconSet,
providers[3].iconSet);
assertEquals(
NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION.iconSet,
providers[4].iconSet);
}),
callback);
}
function testGetMountableProviders(callback) {
var model = new ProvidersModel(volumeManager);
reportPromise(
model.getMountableProviders().then(function(providers) {
assertEquals(2, providers.length);
assertEquals(
NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId,
providers[0].providerId);
assertEquals(
MOUNTED_MULTIPLE_PROVIDING_EXTENSION.providerId,
providers[1].providerId);
}),
volumeManagerFactory.getInstance()
.then(function(volumeManager) {
let model = new ProvidersModel(volumeManager);
return model.getMountableProviders();
})
.then(function(providers) {
assertEquals(2, providers.length);
assertEquals(
NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId,
providers[0].providerId);
assertEquals(
MOUNTED_MULTIPLE_PROVIDING_EXTENSION.providerId,
providers[1].providerId);
}),
callback);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment