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) { ...@@ -178,8 +178,7 @@ IN_PROC_BROWSER_TEST_F(FileManagerJsTest, ImageOrientation) {
} }
IN_PROC_BROWSER_TEST_F(FileManagerJsTest, ProvidersModel) { IN_PROC_BROWSER_TEST_F(FileManagerJsTest, ProvidersModel) {
RunTest(base::FilePath( RunGeneratedTest("/foreground/js/providers_model_unittest.html");
FILE_PATH_LITERAL("foreground/js/providers_model_unittest.html")));
} }
IN_PROC_BROWSER_TEST_F(FileManagerJsTest, FilesTooltip) { IN_PROC_BROWSER_TEST_F(FileManagerJsTest, FilesTooltip) {
......
...@@ -540,6 +540,16 @@ js_library("providers_model") { ...@@ -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") { js_library("quick_view_controller") {
deps = [ deps = [
":dialog_type", ":dialog_type",
...@@ -674,6 +684,7 @@ js_library("webui_command_extender") { ...@@ -674,6 +684,7 @@ js_library("webui_command_extender") {
js_unit_tests("unit_tests") { js_unit_tests("unit_tests") {
deps = [ deps = [
":file_list_model_unittest", ":file_list_model_unittest",
":providers_model_unittest",
":thumbnail_loader_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 @@ ...@@ -2,214 +2,248 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// Set up string assets. /**
* Load time data.
* @type {Object}
*/
loadTimeData.data = { 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. * Providing extension which has a mounted file system and doesn't support
var MOUNTED_SINGLE_PROVIDING_EXTENSION = { * multiple mounts.
* @type {Object}
*/
const MOUNTED_SINGLE_PROVIDING_EXTENSION = {
name: 'mounted-single-extension-name',
source: VolumeManagerCommon.Source.NETWORK,
providerId: 'mounted-single-provider-id', providerId: 'mounted-single-provider-id',
iconSet: { iconSet: {
icon16x16Url: 'chrome://mounted-single-extension-id-16.jpg', 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, configurable: false,
watchable: true, watchable: true,
multipleMounts: false, multipleMounts: false,
source: 'network'
}; };
// A providing extension which has not mounted a file system, and doesn't /**
// support multiple mounts. * Providing extension which has a not-mounted file system and doesn't support
var NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION = { * multiple mounts.
providerId: 'not-mounted-single-provider-id', * @type {Object}
iconSet: { */
icon16x16Url: 'chrome://not-mounted-single-extension-id-16.jpg', const NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION = {
icon32x32Url: 'chrome://not-mounted-single-extension-id-32.jpg'
},
name: 'not-mounted-single-extension-name', name: 'not-mounted-single-extension-name',
configurable: false, source: VolumeManagerCommon.Source.NETWORK,
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', providerId: 'not-mounted-single-provider-id',
iconSet: { iconSet: {
icon16x16Url: 'chrome://not-mounted-single-extension-id-16.jpg', 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, configurable: false,
watchable: true, watchable: true,
multipleMounts: false, multipleMounts: false,
source: 'network'
}; };
// A providing extension which has mounted a file system and supports mounting /**
// more. * Providing extension which has a mounted file system and supports multiple
var MOUNTED_MULTIPLE_PROVIDING_EXTENSION = { * mounts.
* @type {Object}
*/
const MOUNTED_MULTIPLE_PROVIDING_EXTENSION = {
name: 'mounted-multiple-extension-name',
source: VolumeManagerCommon.Source.NETWORK,
providerId: 'mounted-multiple-provider-id', providerId: 'mounted-multiple-provider-id',
iconSet: { iconSet: {
icon16x16Url: 'chrome://mounted-multiple-extension-id-16.jpg', 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, configurable: true,
watchable: false, watchable: false,
multipleMounts: true, 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. * Providing extension which has a not-mounted file system of FILE source.
var NOT_MOUNTED_FILE_PROVIDING_EXTENSION = { * 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', providerId: 'file-provider-id',
iconSet: { iconSet: {
icon16x16Url: 'chrome://file-extension-id-16.jpg', 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, configurable: false,
watchable: true, watchable: true,
multipleMounts: 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 * Providing extension which has a not-mounted file system of DEVICE source.
// when the device is attached. * Such providers are not mounted by users: they automatically mount when the
var NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION = { * DEVICE is attached.
* @type {Object}
*/
const NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION = {
name: 'device-extension-name',
source: VolumeManagerCommon.Source.DEVICE,
providerId: 'device-provider-id', providerId: 'device-provider-id',
iconSet: { iconSet: {
icon16x16Url: 'chrome://device-extension-id-16.jpg', 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, configurable: false,
watchable: true, watchable: true,
multipleMounts: true, multipleMounts: true,
source: 'device'
}; };
var volumeManager = null;
function addProvidedVolume(volumeManager, providerId, volumeId) { function addProvidedVolume(volumeManager, providerId, volumeId) {
var fileSystem = new MockFileSystem(volumeId, 'filesystem:' + volumeId); let fileSystem = new MockFileSystem(volumeId, 'filesystem:' + volumeId);
fileSystem.entries['/'] = new MockDirectoryEntry(fileSystem, ''); fileSystem.entries['/'] = new MockDirectoryEntry(fileSystem, '');
var volumeInfo = new VolumeInfoImpl( let volumeInfo = new VolumeInfoImpl(
VolumeManagerCommon.VolumeType.PROVIDED, volumeId, fileSystem, VolumeManagerCommon.VolumeType.PROVIDED, volumeId, fileSystem,
'', // error '', // error
'', // deviceType '', // deviceType
'', // devicePath '', // devicePath
false, // isReadonly false, // isReadonly
false, // isReadonlyRemovableDevice false, // isReadonlyRemovableDevice
{isCurrentProfile: true, displayName: ''}, // profile {isCurrentProfile: true, displayName: ''}, // profile
'', // label '', // label
providerId, // providerId providerId, // providerId
false, // hasMedia false, // hasMedia
false, // configurable false, // configurable
false, // watchable false, // watchable
'network', // source VolumeManagerCommon.Source.NETWORK, // source
'', // diskFileSystemType VolumeManagerCommon.FileSystemType.UNKNOWN, // diskFileSystemType
{}); // iconSet {}); // iconSet
volumeManager.volumeInfoList.add(volumeInfo); volumeManager.volumeInfoList.add(volumeInfo);
} }
function setUp() { function setUp() {
// Create a dummy API for fetching a list of providers. // Create and install a mock fileManagerPrivate API for fetching the list of
// TODO(mtomasz): Add some native (non-extension) providers. // providers. TODO(mtomasz): Add some native (non-extension) providers.
chrome.fileManagerPrivate = { let mockChrome = {
getProviders: function(callback) { fileManagerPrivate: {
callback([MOUNTED_SINGLE_PROVIDING_EXTENSION, getProviders: function(callback) {
NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION, callback([
MOUNTED_MULTIPLE_PROVIDING_EXTENSION, MOUNTED_SINGLE_PROVIDING_EXTENSION,
NOT_MOUNTED_FILE_PROVIDING_EXTENSION, NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION,
NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION]); MOUNTED_MULTIPLE_PROVIDING_EXTENSION,
} NOT_MOUNTED_FILE_PROVIDING_EXTENSION,
NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION
]);
},
},
}; };
mockChrome.runtime = {};
installMockChrome(mockChrome);
new MockCommandLinePrivate(); new MockCommandLinePrivate();
chrome.runtime = {};
// Create and install a volume manager.
// Create a dummy volume manager. let volumeManager = new MockVolumeManager();
volumeManager = new MockVolumeManager(); MockVolumeManager.installMockSingleton(volumeManager);
addProvidedVolume(
volumeManager, MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId, 'volume-1'); // Add provided test volumes.
addProvidedVolume( const single = MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId;
volumeManager, MOUNTED_MULTIPLE_PROVIDING_EXTENSION.providerId, addProvidedVolume(volumeManager, single, 'volume-1');
'volume-2'); const multiple = MOUNTED_MULTIPLE_PROVIDING_EXTENSION.providerId;
addProvidedVolume(volumeManager, multiple, 'volume-2');
} }
function testGetInstalledProviders(callback) { function testGetInstalledProviders(callback) {
var model = new ProvidersModel(volumeManager);
reportPromise( reportPromise(
model.getInstalledProviders().then(function(providers) { volumeManagerFactory.getInstance()
assertEquals(5, providers.length); .then(function(volumeManager) {
assertEquals( let model = new ProvidersModel(volumeManager);
MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId, return model.getInstalledProviders();
providers[0].providerId); })
assertEquals( .then(function(providers) {
MOUNTED_SINGLE_PROVIDING_EXTENSION.iconSet, providers[0].iconSet); assertEquals(5, providers.length);
assertEquals( assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.name, providers[0].name); MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId,
assertEquals( providers[0].providerId);
MOUNTED_SINGLE_PROVIDING_EXTENSION.configurable, assertEquals(
providers[0].configurable); MOUNTED_SINGLE_PROVIDING_EXTENSION.iconSet,
assertEquals( providers[0].iconSet);
MOUNTED_SINGLE_PROVIDING_EXTENSION.watchable, assertEquals(
providers[0].watchable); MOUNTED_SINGLE_PROVIDING_EXTENSION.name, providers[0].name);
assertEquals( assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.multipleMounts, MOUNTED_SINGLE_PROVIDING_EXTENSION.configurable,
providers[0].multipleMounts); providers[0].configurable);
assertEquals( assertEquals(
MOUNTED_SINGLE_PROVIDING_EXTENSION.source, providers[0].source); MOUNTED_SINGLE_PROVIDING_EXTENSION.watchable,
providers[0].watchable);
assertEquals( assertEquals(
NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId, MOUNTED_SINGLE_PROVIDING_EXTENSION.multipleMounts,
providers[1].providerId); providers[0].multipleMounts);
assertEquals( assertEquals(
MOUNTED_MULTIPLE_PROVIDING_EXTENSION.providerId, MOUNTED_SINGLE_PROVIDING_EXTENSION.source, providers[0].source);
providers[2].providerId);
assertEquals( assertEquals(
NOT_MOUNTED_FILE_PROVIDING_EXTENSION.providerId, NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId,
providers[3].providerId); providers[1].providerId);
assertEquals( assertEquals(
NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION.providerId, MOUNTED_MULTIPLE_PROVIDING_EXTENSION.providerId,
providers[4].providerId); providers[2].providerId);
assertEquals(
assertEquals( NOT_MOUNTED_FILE_PROVIDING_EXTENSION.providerId,
NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION.iconSet, providers[3].providerId);
providers[1].iconSet); assertEquals(
assertEquals( NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION.providerId,
MOUNTED_MULTIPLE_PROVIDING_EXTENSION.iconSet, providers[2].iconSet); providers[4].providerId);
assertEquals(
NOT_MOUNTED_FILE_PROVIDING_EXTENSION.iconSet, providers[3].iconSet); assertEquals(
assertEquals( NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION.iconSet,
NOT_MOUNTED_DEVICE_PROVIDING_EXTENSION.iconSet, providers[1].iconSet);
providers[4].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); callback);
} }
function testGetMountableProviders(callback) { function testGetMountableProviders(callback) {
var model = new ProvidersModel(volumeManager);
reportPromise( reportPromise(
model.getMountableProviders().then(function(providers) { volumeManagerFactory.getInstance()
assertEquals(2, providers.length); .then(function(volumeManager) {
assertEquals( let model = new ProvidersModel(volumeManager);
NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId, return model.getMountableProviders();
providers[0].providerId); })
assertEquals( .then(function(providers) {
MOUNTED_MULTIPLE_PROVIDING_EXTENSION.providerId, assertEquals(2, providers.length);
providers[1].providerId); assertEquals(
}), NOT_MOUNTED_SINGLE_PROVIDING_EXTENSION.providerId,
providers[0].providerId);
assertEquals(
MOUNTED_MULTIPLE_PROVIDING_EXTENSION.providerId,
providers[1].providerId);
}),
callback); 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