| 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 |