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 // This is ported from event-path-declarative-test.dart in polymer/test/html/. | |
6 // While the original test was intended to test event.path support, we changed | |
7 // the test structure just to check that the event was handled in the expected | |
8 // order. | |
9 library polymer.test.event_path_declarative_test; | |
10 | |
11 import 'dart:async'; | |
12 import 'dart:html'; | |
13 | |
14 import 'package:unittest/unittest.dart'; | |
15 import 'package:unittest/html_config.dart'; | |
16 import 'package:polymer/polymer.dart'; | |
17 | |
18 var _observedEvents = []; | |
19 var _testFired; | |
20 | |
21 main() => initPolymer(); | |
22 | |
23 @reflectable | |
24 class XZug extends PolymerElement { | |
25 XZug.created() : super.created(); | |
26 | |
27 ready() { | |
28 shadowRoot.on['test-event'].listen((e) { | |
29 _testFired.complete(null); | |
30 }); | |
31 } | |
32 | |
33 contentTestEventHandler(e, detail, sender) { | |
34 _observedEvents.add(sender); | |
35 } | |
36 | |
37 divTestEventHandler(e, detail, sender) { | |
38 _observedEvents.add(sender); | |
39 } | |
40 | |
41 testEventHandler(e, detail, sender) { | |
42 _observedEvents.add(sender); | |
43 } | |
44 } | |
45 | |
46 @reflectable | |
47 class XFoo extends PolymerElement { | |
48 XFoo.created() : super.created(); | |
49 | |
50 contentTestEventHandler(e, detail, sender) { | |
51 _observedEvents.add(sender); | |
52 } | |
53 | |
54 divTestEventHandler(e, detail, sender) { | |
55 _observedEvents.add(sender); | |
56 } | |
57 | |
58 testEventHandler(e, detail, sender) { | |
59 _observedEvents.add(sender); | |
60 } | |
61 } | |
62 | |
63 @reflectable | |
64 class XBar extends PolymerElement { | |
65 XBar.created() : super.created(); | |
66 | |
67 contentTestEventHandler(e, detail, sender) { | |
68 _observedEvents.add(sender); | |
69 } | |
70 | |
71 divTestEventHandler(e, detail, sender) { | |
72 _observedEvents.add(sender); | |
73 } | |
74 | |
75 testEventHandler(e, detail, sender) { | |
76 _observedEvents.add(sender); | |
77 } | |
78 } | |
79 | |
80 @initMethod init() { | |
81 useHtmlConfiguration(); | |
82 // TODO(sigmund): switch back to use @CustomTag. We seem to be running into a | |
83 // problem where using @CustomTag doesn't guarantee that we register the tags | |
84 // in the following order (the query from mirrors is non deterministic). | |
85 // We shouldn't care about registration order though. See dartbug.com/14459 | |
86 Polymer.register('x-zug', XZug); | |
87 Polymer.register('x-foo', XFoo); | |
88 Polymer.register('x-bar', XBar); | |
89 | |
90 _testFired = new Completer(); | |
91 | |
92 setUp(() => Polymer.onReady); | |
93 test('event paths', () { | |
94 var target = document.querySelector('#target'); | |
95 target.dispatchEvent(new CustomEvent('test-event', canBubble: true)); | |
96 return _testFired.future.then((_) { | |
97 var xBar = querySelector('x-bar'); | |
98 var xBarDiv = xBar.shadowRoot.querySelector('#xBarDiv'); | |
99 var xBarContent = xBar.shadowRoot.querySelector('#xBarContent'); | |
100 var xFoo = xBar.shadowRoot.querySelector('x-foo'); | |
101 var xFooDiv = xFoo.shadowRoot.querySelector('#xFooDiv'); | |
102 var xFooContent = xFoo.shadowRoot.querySelector('#xFooContent'); | |
103 var xZug = xFoo.shadowRoot.querySelector('x-zug'); | |
104 var xZugDiv = xZug.shadowRoot.querySelector('#xZugDiv'); | |
105 var xZugContent = xZug.shadowRoot.querySelector('#xZugContent'); | |
106 | |
107 var expectedPath = [ | |
108 xBarContent, | |
109 xBarDiv, | |
110 xFooContent, | |
111 xZugContent, | |
112 xZugDiv, | |
113 xZug, | |
114 xFooDiv, | |
115 xFoo, | |
116 xBar | |
117 ]; | |
118 debugName(e) => '${e.localName}#${e.id}'; | |
119 expect(_observedEvents, expectedPath, | |
120 reason: '<br>\nexpected: ${expectedPath.map(debugName).join(',')}' | |
121 '<br>\nactual: ${_observedEvents.map(debugName).join(',')}'); | |
122 }); | |
123 }); | |
124 } | |
OLD | NEW |