OLD | NEW |
| (Empty) |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
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. | |
4 | |
5 import 'dart:async'; | |
6 import 'dart:html'; | |
7 import 'package:unittest/unittest.dart'; | |
8 import 'package:unittest/html_config.dart'; | |
9 import 'package:polymer/polymer.dart'; | |
10 | |
11 @CustomTag('inner-element') | |
12 class InnerElement extends PolymerElement { | |
13 @published int number; | |
14 @published bool boolean; | |
15 @published String string; | |
16 | |
17 InnerElement.created() : super.created(); | |
18 } | |
19 | |
20 @CustomTag('outer-element') | |
21 class OuterElement extends PolymerElement { | |
22 @observable int number = 1; | |
23 @observable bool boolean = false; | |
24 @observable String string = 'a'; | |
25 | |
26 OuterElement.created() : super.created(); | |
27 } | |
28 | |
29 main() => initPolymer().then((zone) => zone.run(() { | |
30 useHtmlConfiguration(); | |
31 | |
32 setUp(() => Polymer.onReady); | |
33 | |
34 test('inner element gets initial values', () { | |
35 var outer = querySelector('outer-element'); | |
36 var inner = outer.shadowRoot.querySelector('inner-element'); | |
37 | |
38 expect(inner.number, 1); | |
39 expect(inner.boolean, false); | |
40 expect(inner.string, 'a'); | |
41 }); | |
42 | |
43 test('inner element updates the outer element', () { | |
44 var outer = querySelector('outer-element'); | |
45 var inner = outer.shadowRoot.querySelector('inner-element'); | |
46 | |
47 // Toggle the value in the child and make sure that propagates around. | |
48 inner.number = 2; | |
49 inner.boolean = true; | |
50 inner.string = 'b'; | |
51 return new Future(() {}).then((_) { | |
52 expect(outer.number, 2); | |
53 expect(outer.boolean, true); | |
54 expect(outer.string, 'b'); | |
55 | |
56 inner.number = 1; | |
57 inner.boolean = false; | |
58 inner.string = 'a'; | |
59 }).then((_) => new Future(() {})).then((_) { | |
60 expect(outer.number, 1); | |
61 expect(outer.boolean, false); | |
62 expect(outer.string, 'a'); | |
63 }); | |
64 }); | |
65 | |
66 test('outer element updates the inner element', () { | |
67 var outer = querySelector('outer-element'); | |
68 var inner = outer.shadowRoot.querySelector('inner-element'); | |
69 | |
70 // Toggle the value in the parent and make sure that propagates around. | |
71 outer.number = 2; | |
72 outer.boolean = true; | |
73 outer.string = 'b'; | |
74 return new Future(() {}).then((_) { | |
75 expect(inner.number, 2); | |
76 expect(inner.boolean, true); | |
77 expect(inner.string, 'b'); | |
78 | |
79 outer.number = 1; | |
80 outer.boolean = false; | |
81 outer.string = 'a'; | |
82 }).then((_) => new Future(() {})).then((_) { | |
83 expect(inner.number, 1); | |
84 expect(inner.boolean, false); | |
85 expect(inner.string, 'a'); | |
86 }); | |
87 }); | |
88 })); | |
OLD | NEW |