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 |