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

Unified Diff: tests/js/polyfills/storage.polyfill.test.js

Issue 1593443003: Finished storage polyfill. (Closed) Base URL: sso://user/alger/caterpillar@master
Patch Set: Response to CR Created 4 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 | « src/js/polyfills/storage.polyfill.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/js/polyfills/storage.polyfill.test.js
diff --git a/tests/js/polyfills/storage.polyfill.test.js b/tests/js/polyfills/storage.polyfill.test.js
index ad1f1d9075200746fe59baffab74fd763d8cfe51..9f83ac727ba43965e3b23c93f582a655761d3445 100644
--- a/tests/js/polyfills/storage.polyfill.test.js
+++ b/tests/js/polyfills/storage.polyfill.test.js
@@ -154,6 +154,8 @@ QUnit.module('storage', {
afterEach: function() {
sandbox.restore();
localforage.willError = false;
+ localforage.clear();
+ chrome.caterpillar.storage.resetOnChangedListenersForTests();
}
});
@@ -250,4 +252,166 @@ QUnit.test('get can get key value pairs with defaults', function(assert) {
});
});
-// TODO(alger): Test onChanged using set and remove.
+QUnit.test('getBytesInUse sets an error', function(assert) {
+ var done = assert.async();
+ chrome.storage.local.getBytesInUse([], function() {
+ assert.equal(chrome.caterpillar.setError.args[0][0],
+ 'getBytesInUse not implemented.');
+ done();
+ });
+});
+
+QUnit.test('getBytesInUse juggles arguments', function(assert) {
+ var done = assert.async();
+ chrome.storage.local.getBytesInUse(done);
+ assert.expect(0);
+});
+
+QUnit.test('can set key/value pairs', function(assert) {
+ var done = assert.async();
+ chrome.storage.local.set({'hello': 'world', 'test': 123}, function() {
+ localforage.getItem('hello')
+ .then(function(value) {
+ assert.strictEqual(value, 'world');
+ return localforage.getItem('test');
+ })
+ .then(function(value) {
+ assert.strictEqual(value, 123);
+ done();
+ });
+ });
+});
+
+QUnit.test('can remove a single item', function(assert) {
+ var done = assert.async();
+ chrome.storage.local.remove('test1', function() {
+ localforage.getItem('test1').then(function(value) {
+ assert.strictEqual(value, null);
+ done();
+ });
+ });
+});
+
+QUnit.test('can remove multiple items', function(assert) {
+ var done = assert.async();
+ chrome.storage.local.remove(['test1', 'test2'], function() {
+ localforage.getItem('test1')
+ .then(function(value) {
+ assert.strictEqual(value, null);
+ return localforage.getItem('test2');
+ })
+ .then(function(value) {
+ assert.strictEqual(value, null);
+ done();
+ });
+ });
+});
+
+QUnit.test('can clear all items', function(assert) {
+ var done = assert.async();
+ chrome.storage.local.clear(function() {
+ localforage.getItem('test1')
+ .then(function(value) {
+ assert.strictEqual(value, null);
+ return localforage.getItem('test2');
+ })
+ .then(function(value) {
+ assert.strictEqual(value, null);
+ done();
+ });
+ });
+});
+
+QUnit.test('set runs onChanged handlers', function(assert) {
+ var done = assert.async();
+ chrome.storage.onChanged.addListener(function(changes) {
+ assert.strictEqual(changes['test1'].oldValue, 123);
+ assert.strictEqual(changes['test1'].newValue, 'hello');
+ done();
+ });
+ chrome.storage.local.set({'test1': 'hello'});
+});
+
+QUnit.test('set runs multiple onChanged handlers', function(assert) {
+ assert.expect(0);
+ var done = assert.async(2);
+ chrome.storage.onChanged.addListener(function(changes) {
+ done();
+ });
+ chrome.storage.onChanged.addListener(function(changes) {
+ done();
+ });
+ chrome.storage.local.set({'test1': 'hello'});
+});
+
+QUnit.test('removing 1 key runs onChanged handlers', function(assert) {
+ var done = assert.async();
+ chrome.storage.onChanged.addListener(function(changes) {
+ assert.strictEqual(changes['test1'].oldValue, 123);
+ assert.strictEqual(changes['test1'].newValue, null);
+ done();
+ });
+ chrome.storage.local.remove('test1');
+});
+
+QUnit.test('removing 1 key runs multiple onChanged handlers', function(assert) {
+ assert.expect(0);
+ var done = assert.async(2);
+ chrome.storage.onChanged.addListener(function(changes) {
+ done();
+ });
+ chrome.storage.onChanged.addListener(function(changes) {
+ done();
+ });
+ chrome.storage.local.remove('test1');
+});
+
+QUnit.test('removing multiple keys runs onChanged handlers', function(assert) {
+ var done = assert.async();
+ chrome.storage.onChanged.addListener(function(changes) {
+ assert.strictEqual(changes['test1'].oldValue, 123);
+ assert.strictEqual(changes['test1'].newValue, null);
+ assert.strictEqual(changes['test2'].oldValue, '456');
+ assert.strictEqual(changes['test2'].newValue, null);
+ done();
+ });
+ chrome.storage.local.remove(['test1', 'test2']);
+});
+
+QUnit.test('removing multiple keys runs multiple onChanged handlers',
+ function(assert) {
+ assert.expect(0);
+ var done = assert.async(2);
+ chrome.storage.onChanged.addListener(function(changes) {
+ done();
+ });
+ chrome.storage.onChanged.addListener(function(changes) {
+ done();
+ });
+ chrome.storage.local.remove('test1');
+ }
+);
+
+QUnit.test('clearing runs onChanged handlers', function(assert) {
+ var done = assert.async();
+ chrome.storage.onChanged.addListener(function(changes) {
+ assert.strictEqual(changes['test1'].oldValue, 123);
+ assert.strictEqual(changes['test1'].newValue, null);
+ assert.strictEqual(changes['test2'].oldValue, '456');
+ assert.strictEqual(changes['test2'].newValue, null);
+ done();
+ });
+ chrome.storage.local.clear();
+});
+
+QUnit.test('clearing runs multiple onChanged handlers', function(assert) {
+ assert.expect(0);
+ var done = assert.async(2);
+ chrome.storage.onChanged.addListener(function(changes) {
+ done();
+ });
+ chrome.storage.onChanged.addListener(function(changes) {
+ done();
+ });
+ chrome.storage.local.clear();
+});
« no previous file with comments | « src/js/polyfills/storage.polyfill.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698