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

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

Issue 677213002: Add ImportHistory class and RecordStorage class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix a comment typo. Created 6 years, 2 months 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/import_history_unittest.js
diff --git a/chrome/test/data/file_manager/unit_tests/import_history_unittest.js b/chrome/test/data/file_manager/unit_tests/import_history_unittest.js
new file mode 100644
index 0000000000000000000000000000000000000000..fed2e53391b2c5c1a6b5e9d3226c216a05aa9812
--- /dev/null
+++ b/chrome/test/data/file_manager/unit_tests/import_history_unittest.js
@@ -0,0 +1,174 @@
+// 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.
+'use strict';
+
+/** @const {string} */
+var FILE_LAST_MODIFIED = new Date("Dec 4 1968").toString();
+
+/** @const {string} */
+var FILE_SIZE = 1234;
+
+/** @const {string} */
+var FILE_PATH = 'test/data';
+
+/** @const {string} */
+var GOOGLE_DRIVE = 'Google Drive';
+
+/**
+ * Space Cloud: Your source for interstellar cloud storage.
+ * @const {string}
+ */
+var SPACE_CLOUD = 'Space Cloud';
+
+/** @type {!TestFileSystem|undefined} */
+var testFileSystem;
+
+/** @type {!MockFileEntry|undefined} */
+var testFileEntry;
+
+/** @type {!RecordStorage|undefined} */
+var storage;
+
+/** @type {!Promise.<ImportHistory>|undefined} */
+var historyLoader;
+
+// Set up the test components.
+function setUp() {
+ testFileSystem = new TestFileSystem('abc-123');
+ testFileEntry = new MockFileEntry(
+ testFileSystem,
+ FILE_PATH, {
+ size: FILE_SIZE,
+ modificationTime: FILE_LAST_MODIFIED
+ });
+
+ storage = new TestRecordStorage();
+ historyLoader = ImportHistory.load(storage);
+}
+
+/**
+ * In-memory test implementation of {@code RecordStorage}.
+ *
+ * @constructor
+ * @implements {RecordStorage}
+ */
+var TestRecordStorage = function() {
+
+ // Pre-populate the store with some "previously written" data <wink>.
+ /** @private {!Array.<!Array.<string>>} */
+ this.records_ = [
+ [FILE_LAST_MODIFIED + '_' + FILE_SIZE, GOOGLE_DRIVE],
+ ['99999_99999', SPACE_CLOUD]
+ ];
+
+ /**
+ * @override
+ * @this {TestRecordStorage}
+ */
+ this.readAll = function() {
+ return Promise.resolve(this.records_);
+ };
+
+ /**
+ * @override
+ * @this {TestRecordStorage}
+ */
+ this.write = function(record) {
+ this.records_.push(record);
+ return Promise.resolve();
+ };
+};
+
+/**
+ * @return {!Promise.<RecordStorage>}
+ */
+function createRealStorage() {
+ return new Promise(
+ function(resolve, reject) {
+ var onFilesystemReady = function(fileSystem) {
+ fileSystem.root.getFile(
+ 'test.data',
+ {
+ create: true,
+ exclusive: false
+ },
+ function(fileEntry) {
+ resolve(new FileEntryRecordStorage(fileEntry));
+ },
+ reject);
+ };
+
+ window.webkitRequestFileSystem(
+ TEMPORARY,
+ 1024 * 1024,
+ onFilesystemReady,
+ reject);
+ });
+}
+
+function testRecordStorageRemembersPreviouslyWrittenRecords(callback) {
+ createRealStorage()
+ .then(
+ function(storage) {
+ storage.write(['abc', '123']).then(
+ function() {
+ storage.readAll().then(
+ function(records) {
+ callback(/* error */ records.length != 1);
+ },
+ callback);
+ });
+ },
+ callback)
+ .catch(handleError.bind(callback));
+}
+
+function testHistoryWasImportedFalseForUnknownEntry(callback) {
+ // TestRecordWriter is pre-configured with a Space Cloud entry
+ // but not for this file.
+ historyLoader.then(
+ function(testHistory) {
+ testHistory.wasImported(testFileEntry, SPACE_CLOUD).then(
+ function(result) {
+ callback(/* error */ result);
+ });
+ })
+ .catch(handleError.bind(callback));
+}
+
+function testHistoryWasImportedTrueForKnownEntryLoadedFromStorage(callback) {
+ // TestRecordWriter is pre-configured with this entry.
+ historyLoader.then(
+ function(testHistory) {
+ testHistory.wasImported(testFileEntry, GOOGLE_DRIVE).then(
+ function(result) {
+ callback(/* error */ !result);
+ });
+ })
+ .catch(handleError.bind(callback));
+}
+
+function testHistoryWasImportedTrueForKnownEntrySetAtRuntime(callback) {
+ historyLoader.then(
+ function(testHistory) {
+ testHistory.markImported(testFileEntry, SPACE_CLOUD).then(
+ function() {
+ testHistory.wasImported(testFileEntry, SPACE_CLOUD).then(
+ function(result) {
+ callback(/* error */ !result);
+ });
+ });
+ })
+ .catch(handleError.bind(callback));
+}
+
+/**
+ * Shared error handler.
+ * @param {function()} callback
+ * @param {!Object} error
+ */
+function handleError(callback, error) {
+ console.error(error.stack || error);
+ callback(/* error */ true);
+}

Powered by Google App Engine
This is Rietveld 408576698