OLD | NEW |
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 } |
OLD | NEW |