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 library polymer.test.event_binding_release_handler_test; | |
6 | |
7 import 'dart:async'; | |
8 import 'dart:html'; | |
9 import 'package:polymer/polymer.dart'; | |
10 import 'package:unittest/unittest.dart'; | |
11 import 'package:unittest/html_config.dart'; | |
12 import 'package:template_binding/template_binding.dart'; | |
13 | |
14 @CustomTag('x-foo') | |
15 class XFoo extends PolymerElement { | |
16 @PublishedProperty(reflect: true) | |
17 int count = 1; | |
18 | |
19 XFoo.created() : super.created(); | |
20 | |
21 increment() { | |
22 ++count; | |
23 } | |
24 } | |
25 | |
26 main() { | |
27 // Do not run the test in the zone so the future does not trigger a | |
28 // dirtyCheck. We want to verify that event bindings trigger dirty checks on | |
29 // their own. | |
30 initPolymer(); | |
31 | |
32 useHtmlConfiguration(); | |
33 | |
34 setUp(() => Polymer.onReady); | |
35 | |
36 test('event handlers can be released', () { | |
37 XFoo element = querySelector('x-foo'); | |
38 expect(element, isNotNull); | |
39 ButtonElement button = element.shadowRoot.querySelector('button'); | |
40 expect(button, isNotNull); | |
41 | |
42 button.click(); | |
43 return new Future(() {}).then((_) { | |
44 expect(element.shadowRoot.querySelector('p').text, 'Count: 2'); | |
45 // Remove and detach the element so the binding is invalidated. | |
46 element.remove(); | |
47 element.detached(); | |
48 }).then((_) => new Future(() {})).then((_) { | |
49 // Clicks should no longer affect the elements count. | |
50 button.click(); | |
51 // TODO(jakemac): This is flaky so its commented out, (the rest of the | |
52 // test is not flaky). Figure out how to make this not flaky. | |
53 // expect(element.count, 2); | |
54 }); | |
55 }); | |
56 } | |
OLD | NEW |