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 |
index be81c33d6775d005927e687de8ffcdae45846b23..54cda9f8598452406bde409af42536461a7e77c6 100644 |
--- 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 |
@@ -34,6 +34,20 @@ TestEmptyMetadataProvider.prototype.getImpl = function(requests) { |
})); |
}; |
+function ManualTestMetadataProvider(cache) { |
+ NewMetadataProvider.call( |
+ this, cache, ['propertyA', 'propertyB', 'propertyC']); |
+ this.callback = []; |
+} |
+ |
+ManualTestMetadataProvider.prototype.__proto__ = NewMetadataProvider.prototype; |
+ |
+ManualTestMetadataProvider.prototype.getImpl = function(requests) { |
+ return new Promise(function(fulfill) { |
+ this.callback.push(fulfill); |
+ }.bind(this)); |
+}; |
+ |
var entryA = { |
toURL: function() { return "filesystem://A"; } |
}; |
@@ -113,6 +127,28 @@ function testNewMetadataProviderRequestBeforeCompletingPreviousRequest( |
}), callback); |
} |
+function testNewMetadataProviderNotUpdateCachedResultAfterRequest( |
+ callback) { |
+ var cache = new MetadataProviderCache(); |
+ var provider = new ManualTestMetadataProvider(cache); |
+ var promise = provider.get([entryA], ['propertyA']); |
+ provider.callback[0]([{propertyA: 'valueA1'}]); |
+ reportPromise(promise.then(function() { |
+ // 'propertyA' is cached here. |
+ var promise1 = provider.get([entryA], ['propertyA', 'propertyB']); |
+ var promise2 = provider.get([entryA], ['propertyC']); |
+ // Returns propertyC. |
+ provider.callback[2]([{propertyA: 'valueA2', propertyC: 'valueC'}]); |
+ provider.callback[1]([{propertyB: 'valueB'}]); |
+ return Promise.all([promise1, promise2]); |
+ }).then(function(results) { |
+ // The result should be cached value at the time when get was called. |
+ assertEquals('valueA1', results[0][0].propertyA); |
+ assertEquals('valueB', results[0][0].propertyB); |
+ assertEquals('valueC', results[1][0].propertyC); |
+ }), callback); |
+} |
+ |
function testNewMetadataProviderGetCache(callback) { |
var cache = new MetadataProviderCache(); |
var provider = new TestMetadataProvider(cache); |