OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2014, 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 import 'dart:async'; |
| 6 import 'dart:html'; |
| 7 import 'package:polymer/auto_binding.dart'; |
| 8 import 'package:polymer/polymer.dart'; |
| 9 import 'package:unittest/unittest.dart'; |
| 10 import 'package:unittest/html_config.dart'; |
| 11 |
| 12 class TestModel { |
| 13 var greeting = 'Hi'; |
| 14 eventAction(e) { |
| 15 e.detail.add('handled'); |
| 16 } |
| 17 } |
| 18 |
| 19 main() => initPolymer().then((zone) => zone.run(() { |
| 20 useHtmlConfiguration(); |
| 21 |
| 22 setUp(() => Polymer.onReady); |
| 23 |
| 24 test('elements upgraded', () { |
| 25 AutoBindingElement template = document.getElementById('one'); |
| 26 template.model = new TestModel(); |
| 27 |
| 28 var completer = new Completer(); |
| 29 var events = 0; |
| 30 window.addEventListener('template-bound', (e) { |
| 31 events++; |
| 32 if (e.target.id == 'one') { |
| 33 expect(e.target, template); |
| 34 |
| 35 var t = template; |
| 36 var h = t.$['h']; |
| 37 expect(h.text, t.model.greeting, reason: 'binding applied'); |
| 38 var ce = t.fire('tap', onNode: h, detail: []); |
| 39 expect(ce.detail, ['handled'], reason: 'element event handler fired'); |
| 40 } |
| 41 |
| 42 if (events == 3) completer.complete(); |
| 43 }); |
| 44 |
| 45 /// test dynamic creation |
| 46 new Future(() { |
| 47 var d = new DivElement(); |
| 48 d.setInnerHtml('<template is="auto-binding">Dynamical' |
| 49 ' <input value="{{value}}"><div>{{value}}</div></template>', |
| 50 treeSanitizer: new _NullSanitizer()); |
| 51 document.body.append(d); |
| 52 }); |
| 53 |
| 54 return completer.future; |
| 55 }); |
| 56 })); |
| 57 |
| 58 class _NullSanitizer implements NodeTreeSanitizer { |
| 59 sanitizeTree(Node node) {} |
| 60 } |
OLD | NEW |