Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1272)

Unified Diff: chrome/test/data/file_manager/unit_tests/media_import_handler_unittest.js

Issue 762593006: Prototype implementation of MediaImportHandler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Sync to master. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/file_manager/unit_tests/media_import_handler_unittest.js
diff --git a/chrome/test/data/file_manager/unit_tests/media_import_handler_unittest.js b/chrome/test/data/file_manager/unit_tests/media_import_handler_unittest.js
new file mode 100644
index 0000000000000000000000000000000000000000..fb6b4095a69cf65e9cd7d22f8c688ca9772770da
--- /dev/null
+++ b/chrome/test/data/file_manager/unit_tests/media_import_handler_unittest.js
@@ -0,0 +1,109 @@
+// Copyright 2014 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.
+
+/**
+ * @type {!MockFileOperationManager}
+ */
+var fileOperationManager;
+
+/**
+ * @type {!MockMediaScanner}
+ */
+var mediaScanner;
+
+/**
+ * @type {!importer.MediaImportHandler}
+ */
+var mediaImporter;
+
+/**
+ * @type {!VolumeInfo}
+ */
+var drive;
+
+function setUp() {
+ // Set up string assets.
+ loadTimeData.data = {
+ DRIVE_DIRECTORY_LABEL: 'My Drive',
+ DOWNLOADS_DIRECTORY_LABEL: 'Downloads'
+ };
+
+ fileOperationManager = new MockFileOperationManager();
+
+ mediaScanner = new MockMediaScanner();
+
+ var volumeManager = new MockVolumeManager();
+ drive = volumeManager.getCurrentProfileVolumeInfo(
+ VolumeManagerCommon.VolumeType.DRIVE);
+ // Create fake parented and non-parented roots.
+ drive.fileSystem.populate([
+ '/root/',
+ '/other/'
+ ]);
+
+ MockVolumeManager.installMockSingleton(volumeManager);
+
+ mediaImporter =
+ new importer.MediaImportHandler(fileOperationManager, mediaScanner);
+}
+
+function testImportFrom(callback) {
+ // Set up a filesystem with some files.
+ var fileSystem = new MockFileSystem('fake-media-volume');
+ var filenames = [
+ '/DCIM/photos0/IMG00001.jpg',
+ '/DCIM/photos0/IMG00002.jpg',
+ '/DCIM/photos0/IMG00003.jpg',
+ '/DCIM/photos1/IMG00001.jpg',
+ '/DCIM/photos1/IMG00002.jpg',
+ '/DCIM/photos1/IMG00003.jpg'
+ ];
+ fileSystem.populate(filenames);
+ // Set up a fake destination for the import.
+ var destinationFileSystem = new MockFileSystem('fake-destination');
+ var destination = function() { return destinationFileSystem.root; };
+
+ // Set up some fake media scan results.
+ var media = filenames.map(function(filename) {
+ return fileSystem.entries[filename];
+ });
+ mediaScanner.setScanResults(media);
+
+ // Verify the results when the import operation is kicked off.
+ reportPromise(
+ fileOperationManager.whenPasteCalled().then(
+ function(args) {
+ // Verify that the task ID is correct.
+ assertEquals(importTask.taskId, args.opt_taskId);
+ // Verify that we're copying, not moving, files.
+ assertFalse(args.isMove);
+ // Verify that the sources are correct.
+ assertEntryListEquals(media, args.sourceEntries);
+ // Verify that the destination is correct.
+ assertEquals(destinationFileSystem.root, args.targetEntry);
+ }),
+ callback);
+ // Kick off an import
+ var importTask = mediaImporter.importMedia(fileSystem.root, destination);
+}
+
+/**
+ * Asserts that two lists contain the same set of Entries. Entries are deemed
+ * to be the same if they point to the same full path.
+ */
+function assertEntryListEquals(list0, list1) {
+ assertEquals(list0.length, list1.length);
+
+ /** @param {!FileEntry} entry */
+ var entryToPath = function(entry) { return entry.fullPath; };
+
+ var paths0 = list0.map(entryToPath);
+ var paths1 = list1.map(entryToPath);
+ paths0.sort();
+ paths1.sort();
+
+ paths0.forEach(function(path, index) {
+ assertEquals(path, paths1[index]);
+ });
+}

Powered by Google App Engine
This is Rietveld 408576698