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

Side by Side Diff: test/iron_localstorage_basic_test.dart

Issue 1418513006: update elements and fix some bugs (Closed) Base URL: git@github.com:dart-lang/polymer_elements.git@master
Patch Set: code review updates Created 5 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « test/iron_list_test_helpers.dart ('k') | test/iron_media_query_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 @TestOn('browser') 4 @TestOn('browser')
5 library polymer_elements.test.iron_localstorage_basic_test; 5 library polymer_elements.test.iron_localstorage_basic_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:convert'; 8 import 'dart:convert';
9 import 'dart:html'; 9 import 'dart:html';
10 import 'dart:js'; 10 import 'dart:js';
11 import 'package:polymer/polymer.dart';
11 import 'package:polymer_elements/iron_localstorage.dart'; 12 import 'package:polymer_elements/iron_localstorage.dart';
12 import 'package:test/test.dart'; 13 import 'package:test/test.dart';
13 import 'package:web_components/web_components.dart'; 14 import 'package:web_components/web_components.dart';
14 import 'common.dart'; 15 import 'common.dart';
15 16
16 main() async { 17 main() async {
17 await initWebComponents(); 18 await initPolymer();
18 IronLocalstorage storage; 19 IronLocalstorage storage;
19 20
20 group('basic', () { 21 group('basic', () {
21 setUp(() { 22 setUp(() {
22 window.localStorage['iron-localstorage-test'] = '{"foo":"bar"}'; 23 window.localStorage['iron-localstorage-test'] = '{"foo":"bar"}';
23 storage = fixture('fixture'); 24 storage = fixture('fixture');
24 storage.jsElement.callMethod('flushDebouncer', ['reload']); 25 storage.jsElement.callMethod('flushDebouncer', ['reload']);
25 }); 26 });
26 27
27 tearDown(() { 28 tearDown(() {
28 window.localStorage.remove('iron-localstorage-test'); 29 window.localStorage.remove('iron-localstorage-test');
29 }); 30 });
30 31
31 test('load', () { 32 test('load', () {
32 expect(storage.value, isNotNull); 33 expect(storage.value, isNotNull);
33 expect(storage.value['foo'], 'bar'); 34 expect(storage.value['foo'], 'bar');
34 }); 35 });
35 36
36 test('save', () { 37 test('save', () {
37 var newValue = {'foo': 'zot'}; 38 var newValue = {'foo': 'zot'};
38 storage.value = newValue; 39 storage.value = newValue;
39 storage.jsElement.callMethod('flushDebouncer', ['save']); 40 storage.flushDebouncer('save');
40 var v = window.localStorage[storage.name]; 41 var v = window.localStorage[storage.name];
41 v = JSON.decode(v); 42 v = JSON.decode(v);
42 expect(v['foo'], newValue['foo']); 43 expect(v['foo'], newValue['foo']);
43 }); 44 });
44 45
45 test('delete', () { 46 test('delete', () {
46 storage.value = null; 47 storage.value = null;
47 storage.jsElement.callMethod('flushDebouncer', ['save']); 48 storage.flushDebouncer('save');
48 var v = window.localStorage[storage.name]; 49 var v = window.localStorage[storage.name];
49 expect(v, isNull); 50 expect(v, isNull);
50 }); 51 });
51 52
52 test('event iron-localstorage-load', () { 53 test('event iron-localstorage-load', () {
53 var done = new Completer(); 54 var done = new Completer();
54 var ls = document.createElement('iron-localstorage'); 55 var ls = document.createElement('iron-localstorage');
55 ls.on['iron-localstorage-load'].take(1).listen((_) { 56 ls.on['iron-localstorage-load'].take(1).listen((_) {
56 done.complete(); 57 done.complete();
57 }); 58 });
58 ls.name = 'iron-localstorage-test'; 59 ls.name = 'iron-localstorage-test';
59 return done.future; 60 return done.future;
60 }); 61 });
61 62
62 test('event iron-localstorage-load-empty', () { 63 test('event iron-localstorage-load-empty', () {
63 var done = new Completer(); 64 var done = new Completer();
64 window.localStorage.remove('iron-localstorage-test'); 65 window.localStorage.remove('iron-localstorage-test');
65 IronLocalstorage ls = document.createElement('iron-localstorage'); 66 IronLocalstorage ls = document.createElement('iron-localstorage');
66 ls.on['iron-localstorage-load-empty'].take(1).listen((_) { 67 ls.on['iron-localstorage-load-empty'].take(1).listen((_) {
67 // testing recommended way to initialize localstorage 68 // testing recommended way to initialize localstorage
68 ls.value = "Yo"; 69 ls.value = "Yo";
69 ls.jsElement.callMethod('flushDebouncer', ['save']); 70 ls.flushDebouncer('save');
70 expect( 71 expect(
71 "Yo", JSON.decode(window.localStorage['iron-localstorage-test'])); 72 "Yo", JSON.decode(window.localStorage['iron-localstorage-test']));
72 done.complete(); 73 done.complete();
73 }); 74 });
74 ls.name = 'iron-localstorage-test'; 75 ls.name = 'iron-localstorage-test';
75 return done.future; 76 return done.future;
76 }); 77 });
77 78
78 test('auto-save sub-properties', () { 79 test('auto-save sub-properties', () {
79 var t = new JsObject.fromBrowserObject( 80 DomBind t = document.querySelector('#boundTemplate');
80 document.querySelector('#boundTemplate'));
81 var ls = document.querySelector('#boundLocal') as IronLocalstorage; 81 var ls = document.querySelector('#boundLocal') as IronLocalstorage;
82 var value = new JsObject.jsify({'foo': 'FOO', 'bar': 'BAR'}); 82 var value = new JsObject.jsify({'foo': 'FOO', 'bar': 'BAR'});
83 t['value'] = value; 83 t['value'] = value;
84 expect('FOO', 84 expect('FOO',
85 ls.value['foo']); // value has propagated from template to storage 85 ls.value['foo']); // value has propagated from template to storage
86 ls.jsElement.callMethod('flushDebouncer', ['save']); 86 ls.flushDebouncer('save');
87 t['value']['foo'] = "Yo"; 87 t['value']['foo'] = "Yo";
88 ls.jsElement.callMethod('flushDebouncer', ['save']); 88 ls.flushDebouncer('save');
89 var item = JSON.decode(window.localStorage['iron-localstorage-test']); 89 var item = JSON.decode(window.localStorage['iron-localstorage-test']);
90 expect('Yo', 90 expect('Yo',
91 isNot(item['foo'])); // did not propagate because did not use setters 91 isNot(item['foo'])); // did not propagate because did not use setters
92 t.callMethod('set', ['value.foo', 'BAZ!']); 92 t.set('value.foo', 'BAZ!');
93 ls.jsElement.callMethod('flushDebouncer', ['save']); 93 ls.flushDebouncer('save');
94 item = JSON.decode(window.localStorage['iron-localstorage-test']); 94 item = JSON.decode(window.localStorage['iron-localstorage-test']);
95 expect('BAZ!', item['foo']); // did propagate 95 expect('BAZ!', item['foo']); // did propagate
96 ls.value = null; 96 ls.value = null;
97 }); 97 });
98 }); 98 });
99 } 99 }
OLDNEW
« no previous file with comments | « test/iron_list_test_helpers.dart ('k') | test/iron_media_query_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698