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