Index: ui/file_manager/file_manager/foreground/js/import_controller_unittest.js |
diff --git a/ui/file_manager/file_manager/foreground/js/import_controller_unittest.js b/ui/file_manager/file_manager/foreground/js/import_controller_unittest.js |
index 89d72efb9e04711818a1af3de59ddb84f5b80af8..d2c47fcba50c86bfff4ce138b6e8ec7c9154a78f 100644 |
--- a/ui/file_manager/file_manager/foreground/js/import_controller_unittest.js |
+++ b/ui/file_manager/file_manager/foreground/js/import_controller_unittest.js |
@@ -23,8 +23,10 @@ var destinationVolume; |
/** @type {!importer.TestCommandWidget} */ |
var widget; |
-// Set up string assets. |
-loadTimeData.data = { |
+/** |
+ * @enum {string} |
+ */ |
+var MESSAGES = { |
CLOUD_IMPORT_BUTTON_LABEL: 'Import it!', |
CLOUD_IMPORT_ACTIVE_IMPORT_BUTTON_LABEL: 'Already importing!', |
CLOUD_IMPORT_EMPTY_SCAN_BUTTON_LABEL: 'No new media', |
@@ -34,6 +36,9 @@ loadTimeData.data = { |
DOWNLOADS_DIRECTORY_LABEL: 'Downloads' |
}; |
+// Set up string assets. |
+loadTimeData.data = MESSAGES; |
+ |
function setUp() { |
// Stub out metrics support. |
metrics = { |
@@ -118,9 +123,12 @@ function testGetCommandUpdate_InitiatesScan(callback) { |
function(response) { |
assertTrue(response.visible); |
assertFalse(response.executable); |
- |
+ assertEquals( |
+ response.label, |
+ MESSAGES.CLOUD_IMPORT_SCANNING_BUTTON_LABEL); |
mediaScanner.assertScanCount(1); |
}); |
+ |
reportPromise(promise, callback); |
} |
@@ -153,6 +161,50 @@ function testGetCommandUpdate_CanExecuteAfterScanIsFinalized(callback) { |
function(response) { |
assertTrue(response.visible); |
assertTrue(response.executable); |
+ assertEquals( |
+ response.label, |
+ MESSAGES.CLOUD_IMPORT_BUTTON_LABEL); |
+ }); |
+ |
+ reportPromise(promise, callback); |
+} |
+ |
+function testGetCommandUpdate_DisabledForInsufficientLocalStorage(callback) { |
+ var controller = createController( |
+ VolumeManagerCommon.VolumeType.MTP, |
+ 'mtp-volume', |
+ [ |
+ '/DCIM/', |
+ '/DCIM/photos0/', |
+ '/DCIM/photos0/IMG00001.jpg', |
+ '/DCIM/photos0/IMG00002.jpg', |
+ '/DCIM/photos1/', |
+ '/DCIM/photos1/IMG00001.jpg', |
+ '/DCIM/photos1/IMG00003.jpg' |
+ ], |
+ '/DCIM'); |
+ |
+ var fileSystem = new MockFileSystem('testFs'); |
+ mediaScanner.fileEntries.push( |
+ new MockFileEntry( |
+ fileSystem, |
+ '/DCIM/photos0/IMG00001.jpg', |
+ {size: 1000000})); |
+ |
+ environment.freeStorageSpace = 100; |
+ environment.directoryChangedListener_(); // initiates a scan. |
+ var promise = widget.updatePromise.then( |
+ function() { |
+ widget.resetPromise(); |
+ mediaScanner.finalizeScans(); |
+ return widget.updatePromise; |
+ }).then( |
+ function(response) { |
+ assertTrue(response.visible); |
+ assertFalse(response.executable); |
+ assertEquals( |
+ response.label, |
+ MESSAGES.CLOUD_IMPORT_INSUFFICIENT_SPACE_BUTTON_LABEL); |
}); |
reportPromise(promise, callback); |
@@ -173,18 +225,59 @@ function testGetCommandUpdate_CannotExecuteEmptyScanResult(callback) { |
], |
'/DCIM'); |
- controller.getCommandUpdate(); |
- mediaScanner.finalizeScans(); |
- |
var promise = controller.getCommandUpdate().then( |
- function(response) { |
- assertTrue(response.visible); |
- assertFalse(response.executable); |
+ function() { |
+ mediaScanner.finalizeScans(); |
+ |
+ return controller.getCommandUpdate().then( |
+ function(response) { |
+ assertTrue(response.visible); |
+ assertFalse(response.executable); |
+ assertEquals( |
+ response.label, |
+ MESSAGES.CLOUD_IMPORT_EMPTY_SCAN_BUTTON_LABEL); |
+ }); |
}); |
reportPromise(promise, callback); |
} |
+function testGetCommandUpdate_DisabledWhileImporting(callback) { |
+ var controller = createController( |
+ VolumeManagerCommon.VolumeType.MTP, |
+ 'mtp-volume', |
+ [ |
+ '/DCIM/', |
+ '/DCIM/photos0/', |
+ '/DCIM/photos0/IMG00001.jpg', |
+ '/DCIM/photos0/IMG00002.jpg', |
+ ], |
+ '/DCIM'); |
+ |
+// First we need to force the controller into a scanning state. |
+environment.directoryChangedListener_(); |
+ |
+var promise = widget.updatePromise.then( |
+ function() { |
+ widget.resetPromise(); |
+ widget.executeListener(); |
+ mediaImporter.assertImportsStarted(1); |
+ // return the reset promise so as to allow execution |
+ // to complete before the test is finished...even though |
+ // we're not waiting on anything in particular. |
+ return controller.getCommandUpdate(); |
+ }).then( |
+ function(response) { |
+ assertTrue(response.visible); |
+ assertFalse(response.executable); |
+ assertEquals( |
+ response.label, |
+ MESSAGES.CLOUD_IMPORT_ACTIVE_IMPORT_BUTTON_LABEL); |
+ }); |
+ |
+ reportPromise(promise, callback); |
+} |
+ |
function testClick_StartsImport(callback) { |
var controller = createController( |
VolumeManagerCommon.VolumeType.MTP, |
@@ -265,6 +358,21 @@ function testDirectoryChange_TriggersUpdate(callback) { |
reportPromise(widget.updatePromise, callback); |
} |
+function testSelectionChange_TriggersUpdate(callback) { |
+ var controller = createController( |
+ VolumeManagerCommon.VolumeType.MTP, |
+ 'mtp-volume', |
+ [ |
+ '/DCIM/', |
+ '/DCIM/photos0/', |
+ '/DCIM/photos0/IMG00001.jpg', |
+ ], |
+ '/DCIM'); |
+ |
+ environment.selectionChangedListener_(); |
+ reportPromise(widget.updatePromise, callback); |
+} |
+ |
function testVolumeUnmount_TriggersUpdate(callback) { |
var controller = createController( |
VolumeManagerCommon.VolumeType.MTP, |
@@ -506,7 +614,10 @@ TestControllerEnvironment = function(volumeInfo, directory) { |
/** @private {function()} */ |
this.directoryChangedListener_; |
- /** @public {!DirectoryEntry} */ |
+ /** @private {function()} */ |
+ this.selectionChangedListener_; |
+ |
+ /** @public {!Entry} */ |
this.selection = []; |
/** @public {boolean} */ |
@@ -572,6 +683,12 @@ TestControllerEnvironment.prototype.addDirectoryChangedListener = |
this.directoryChangedListener_ = listener; |
}; |
+/** @override */ |
+TestControllerEnvironment.prototype.addSelectionChangedListener = |
+ function(listener) { |
+ this.selectionChangedListener_ = listener; |
+}; |
+ |
/** |
* Simulates an unmount event. |
*/ |