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