36258e823c
Some additional references came in from Siggi's change that I missed on the merge. TBR BUG= Review URL: https://codereview.chromium.org//46863003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29312 260f80e4-7a28-3924-810f-c04153c831b5
121 lines
3.5 KiB
Dart
121 lines
3.5 KiB
Dart
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
// This is ported from event-path-declarative-test.dart in polymer/test/html/.
|
|
// While the original test was intended to test event.path support, we changed
|
|
// the test structure just to check that the event was handled in the expected
|
|
// order.
|
|
library polymer.test.event_path_declarative_test;
|
|
|
|
import 'dart:async';
|
|
import 'dart:collection';
|
|
import 'dart:html';
|
|
|
|
import 'package:unittest/unittest.dart';
|
|
import 'package:unittest/html_config.dart';
|
|
import 'package:polymer/polymer.dart';
|
|
import 'package:template_binding/template_binding.dart';
|
|
|
|
var _observedEvents = [];
|
|
var _testFired;
|
|
|
|
main() => initPolymer();
|
|
|
|
@reflectable
|
|
class XZug extends PolymerElement {
|
|
|
|
XZug.created() : super.created();
|
|
|
|
ready() {
|
|
shadowRoot.on['test-event'].listen((e) {
|
|
_testFired.complete(null);
|
|
});
|
|
}
|
|
|
|
|
|
contentTestEventHandler(e, detail, sender) {
|
|
_observedEvents.add(sender);
|
|
}
|
|
|
|
divTestEventHandler(e, detail, sender) {
|
|
_observedEvents.add(sender);
|
|
}
|
|
|
|
testEventHandler(e, detail, sender) {
|
|
_observedEvents.add(sender);
|
|
}
|
|
}
|
|
|
|
@reflectable
|
|
class XFoo extends PolymerElement {
|
|
XFoo.created() : super.created();
|
|
|
|
contentTestEventHandler(e, detail, sender) {
|
|
_observedEvents.add(sender);
|
|
}
|
|
|
|
divTestEventHandler(e, detail, sender) {
|
|
_observedEvents.add(sender);
|
|
}
|
|
|
|
testEventHandler(e, detail, sender) {
|
|
_observedEvents.add(sender);
|
|
}
|
|
}
|
|
|
|
@reflectable
|
|
class XBar extends PolymerElement {
|
|
XBar.created() : super.created();
|
|
|
|
contentTestEventHandler(e, detail, sender) {
|
|
_observedEvents.add(sender);
|
|
}
|
|
|
|
divTestEventHandler(e, detail, sender) {
|
|
_observedEvents.add(sender);
|
|
}
|
|
|
|
testEventHandler(e, detail, sender) {
|
|
_observedEvents.add(sender);
|
|
}
|
|
}
|
|
|
|
@initMethod _init() {
|
|
useHtmlConfiguration();
|
|
// TODO(sigmund): switch back to use @CustomTag. We seem to be running into a
|
|
// problem where using @CustomTag doesn't guarantee that we register the tags
|
|
// in the following order (the query from mirrors is non deterministic).
|
|
// We shouldn't care about registration order though. See dartbug.com/14459
|
|
Polymer.register('x-zug', XZug);
|
|
Polymer.register('x-foo', XFoo);
|
|
Polymer.register('x-bar', XBar);
|
|
|
|
_testFired = new Completer();
|
|
|
|
setUp(() => Polymer.onReady);
|
|
test('event paths', () {
|
|
var target = document.querySelector('#target');
|
|
target.dispatchEvent(new CustomEvent('test-event', canBubble: true));
|
|
return _testFired.future.then((_) {
|
|
var xBar = querySelector('x-bar');
|
|
var xBarDiv = xBar.shadowRoot.querySelector('#xBarDiv');
|
|
var xBarContent = xBar.shadowRoot.querySelector('#xBarContent');
|
|
var xFoo = xBar.shadowRoot.querySelector('x-foo');
|
|
var xFooDiv = xFoo.shadowRoot.querySelector('#xFooDiv');
|
|
var xFooContent = xFoo.shadowRoot.querySelector('#xFooContent');
|
|
var xZug = xFoo.shadowRoot.querySelector('x-zug');
|
|
var xZugDiv = xZug.shadowRoot.querySelector('#xZugDiv');
|
|
var xZugContent = xZug.shadowRoot.querySelector('#xZugContent');
|
|
|
|
var expectedPath = [ xBarContent, xBarDiv, xFooContent,
|
|
xZugContent, xZugDiv, xZug, xFooDiv, xFoo, xBar];
|
|
debugName(e) => '${e.localName}#${e.id}';
|
|
expect(_observedEvents, expectedPath, reason:
|
|
'<br>\nexpected: ${expectedPath.map(debugName).join(',')}'
|
|
'<br>\nactual: ${_observedEvents.map(debugName).join(',')}'
|
|
);
|
|
});
|
|
});
|
|
}
|