blob: cbf33d145180f6a5f9b8c9d94b31fd3b5c6d4721 [file] [log] [blame]
<!doctype html>
<!--
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.
-->
<html>
<head>
<title>event path</title>
<script src="packages/polymer/testing/testing.js"></script>
<script src="packages/unittest/test_controller.js"></script>
<!--
Test ported from:
https://github.com/Polymer/polymer/blob/7936ff8/test/js/events.js
TODO(sigmund): when we have support for mutation observers, render all of
the test in Dart (like events.js does in JS)
-->
</head>
<body>
<polymer-element name="test-a" on-click="clickHandler">
<template></template>
<script type="application/dart">
import 'package:polymer/polymer.dart';
@CustomTag("test-a")
class TestA extends PolymerElement {
List clicks = [];
void clickHandler() {
clicks.add('host click on: $localName (id $id)');
}
}
</script>
</polymer-element>
<polymer-element name="test-b">
<template>
<div>
<span id="b-1">1</span>
<span id="b-2" on-click="clickHandler">2</span>
</div>
</template>
<script type="application/dart">
import 'package:polymer/polymer.dart';
@CustomTag("test-b")
class TestB extends PolymerElement {
List clicks = [];
void clickHandler(event, detail, target) {
clicks.add('local click under $localName (id $id) on ${target.id}');
}
}
</script>
</polymer-element>
<test-a id="a"></test-a>
<test-b id="b"></test-b>
<script type="application/dart">
import 'dart:html';
import 'dart:async';
import 'package:unittest/unittest.dart';
import 'package:unittest/html_config.dart';
main() {
useHtmlConfiguration();
test('host event', () {
// Note: this test is currently the only event in
// polymer/test/js/events.js at commit #7936ff8
Timer.run(expectAsync0(() {
var testA = query('#a');
expect(testA.xtag.clicks, isEmpty);
testA.click();
expect(testA.xtag.clicks, ['host click on: test-a (id a)']);
}));
});
test('local event', () {
Timer.run(expectAsync0(() {
var testB = query('#b');
expect(testB.xtag.clicks, isEmpty);
testB.click();
expect(testB.xtag.clicks, []);
var b1 = testB.shadowRoot.query('#b-1');
b1.click();
expect(testB.xtag.clicks, []);
var b2 = testB.shadowRoot.query('#b-2');
b2.click();
expect(testB.xtag.clicks, ['local click under test-b (id b) on b-2']);
}));
});
}
</script>
</body>
</html>