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

Unified Diff: ui/file_manager/file_manager/foreground/js/metadata/new_metadata_provider_unittest.js

Issue 894283002: Files.app: Add NewMetadataProvider class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed. Created 5 years, 11 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
« no previous file with comments | « ui/file_manager/file_manager/foreground/js/metadata/new_metadata_provider_unittest.html ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/file_manager/file_manager/foreground/js/metadata/new_metadata_provider_unittest.js
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/new_metadata_provider_unittest.js b/ui/file_manager/file_manager/foreground/js/metadata/new_metadata_provider_unittest.js
new file mode 100644
index 0000000000000000000000000000000000000000..533be6097550109a147604fe79546c6afdaa135c
--- /dev/null
+++ b/ui/file_manager/file_manager/foreground/js/metadata/new_metadata_provider_unittest.js
@@ -0,0 +1,115 @@
+// 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.
+
+function TestMetadataProvider(cache) {
+ NewMetadataProvider.call(this, cache);
+ this.requestCount = 0;
+}
+
+TestMetadataProvider.prototype.__proto__ = NewMetadataProvider.prototype;
+
+TestMetadataProvider.prototype.getImpl = function(requests) {
+ this.requestCount++;
+ return Promise.resolve(requests.map(function(request) {
+ var entry = request.entry;
+ var names = request.names;
+ var result = {};
+ for (var i = 0; i < names.length; i++) {
+ result[names[i]] = entry.toURL() + ':' + names[i];
+ }
+ return result;
+ }));
+};
+
+var entryA = {
+ toURL: function() { return "filesystem://A"; }
+};
+
+var entryB = {
+ toURL: function() { return "filesystem://B"; }
+};
+
+function testNewMetadataProviderBasic(callback) {
+ var cache = new MetadataProviderCache();
+ var provider = new TestMetadataProvider(cache);
+ reportPromise(provider.get([entryA, entryB], ['property']).then(
+ function(results) {
+ assertEquals(1, provider.requestCount);
+ assertEquals('filesystem://A:property', results[0].property);
+ assertEquals('filesystem://B:property', results[1].property);
+ }), callback);
+}
+
+function testNewMetadataProviderRequestForCachedProperty(callback) {
+ var cache = new MetadataProviderCache();
+ var provider = new TestMetadataProvider(cache);
+ reportPromise(provider.get([entryA, entryB], ['property']).then(
+ function() {
+ // All the result should be cached here.
+ return provider.get([entryA, entryB], ['property']);
+ }).then(function(results) {
+ assertEquals(1, provider.requestCount);
+ assertEquals('filesystem://A:property', results[0].property);
+ assertEquals('filesystem://B:property', results[1].property);
+ }), callback);
+}
+
+function testNewMetadataProviderRequestForCachedAndNonCachedProperty(callback) {
+ var cache = new MetadataProviderCache();
+ var provider = new TestMetadataProvider(cache);
+ reportPromise(provider.get([entryA, entryB], ['propertyA']).then(
+ function() {
+ assertEquals(1, provider.requestCount);
+ // propertyB has not been cached here.
+ return provider.get([entryA, entryB], ['propertyA', 'propertyB']);
+ }).then(function(results) {
+ assertEquals(2, provider.requestCount);
+ assertEquals('filesystem://A:propertyA', results[0].propertyA);
+ assertEquals('filesystem://A:propertyB', results[0].propertyB);
+ assertEquals('filesystem://B:propertyA', results[1].propertyA);
+ assertEquals('filesystem://B:propertyB', results[1].propertyB);
+ }), callback);
+}
+
+function testNewMetadataProviderRequestForCachedAndNonCachedEntry(callback) {
+ var cache = new MetadataProviderCache();
+ var provider = new TestMetadataProvider(cache);
+ reportPromise(provider.get([entryA], ['property']).then(
+ function() {
+ assertEquals(1, provider.requestCount);
+ // entryB has not been cached here.
+ return provider.get([entryA, entryB], ['property']);
+ }).then(function(results) {
+ assertEquals(2, provider.requestCount);
+ assertEquals('filesystem://A:property', results[0].property);
+ assertEquals('filesystem://B:property', results[1].property);
+ }), callback);
+}
+
+function testNewMetadataProviderRequestBeforeCompletingPreviousRequest(
+ callback) {
+ var cache = new MetadataProviderCache();
+ var provider = new TestMetadataProvider(cache);
+ provider.get([entryA], ['property']);
+ assertEquals(1, provider.requestCount);
+ // The result of first call has not been fetched yet.
+ reportPromise(provider.get([entryA], ['property']).then(
+ function(results) {
+ assertEquals(1, provider.requestCount);
+ assertEquals('filesystem://A:property', results[0].property);
+ }), callback);
+}
+
+function testNewMetadataProviderGetCache(callback) {
+ var cache = new MetadataProviderCache();
+ var provider = new TestMetadataProvider(cache);
+ var promise = provider.get([entryA], ['property']);
+ var cache = provider.getCache([entryA], ['property']);
+ assertEquals(null, cache[0].property);
+ reportPromise(promise.then(function() {
+ var cache = provider.getCache([entryA], ['property']);
+ assertEquals(1, provider.requestCount);
+ assertEquals('filesystem://A:property', cache[0].property);
+ }), callback);
+}
« no previous file with comments | « ui/file_manager/file_manager/foreground/js/metadata/new_metadata_provider_unittest.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698