Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(711)

Unified Diff: packages/template_binding/test/custom_element_bindings_test.dart

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: packages/template_binding/test/custom_element_bindings_test.dart
diff --git a/packages/template_binding/test/custom_element_bindings_test.dart b/packages/template_binding/test/custom_element_bindings_test.dart
deleted file mode 100644
index 0d7429aeeecd67aaacd74c94cc0036540b021694..0000000000000000000000000000000000000000
--- a/packages/template_binding/test/custom_element_bindings_test.dart
+++ /dev/null
@@ -1,177 +0,0 @@
-// 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.
-
-library template_binding.test.custom_element_bindings_test;
-
-import 'dart:async';
-import 'dart:html';
-import 'dart:collection' show MapView;
-import 'package:template_binding/template_binding.dart';
-import 'package:observe/observe.dart';
-import 'package:unittest/html_config.dart';
-import 'package:unittest/unittest.dart';
-import 'package:web_components/polyfill.dart';
-import 'utils.dart';
-import 'package:observe/mirrors_used.dart'; // make test smaller
-import 'package:smoke/mirrors.dart' as smoke;
-
-Future _registered;
-
-main() => dirtyCheckZone().run(() {
- smoke.useMirrors();
- useHtmlConfiguration();
-
- _registered = customElementsReady.then((_) {
- document.registerElement('my-custom-element', MyCustomElement);
- });
-
- group('Custom Element Bindings', customElementBindingsTest);
-});
-
-customElementBindingsTest() {
- setUp(() {
- document.body.append(testDiv = new DivElement());
- return _registered;
- });
-
- tearDown(() {
- testDiv.remove();
- testDiv = null;
- });
-
- test('override bind/bindFinished', () {
- var element = new MyCustomElement();
- var model = toObservable({'a': new Point(123, 444), 'b': new Monster(100)});
-
- var pointBinding = nodeBind(element)
- .bind('my-point', new PathObserver(model, 'a'));
-
- var scaryBinding = nodeBind(element)
- .bind('scary-monster', new PathObserver(model, 'b'));
-
- expect(element.attributes, isNot(contains('my-point')));
- expect(element.attributes, isNot(contains('scary-monster')));
-
- expect(element.myPoint, model['a']);
- expect(element.scaryMonster, model['b']);
-
- model['a'] = null;
- return new Future(() {
- expect(element.myPoint, null);
- expect(element.bindFinishedCalled, 0);
- pointBinding.close();
-
- model['a'] = new Point(1, 2);
- model['b'] = new Monster(200);
- }).then(endOfMicrotask).then((_) {
- expect(element.scaryMonster, model['b']);
- expect(element.myPoint, null, reason: 'a was unbound');
-
- scaryBinding.close();
- model['b'] = null;
- }).then(endOfMicrotask).then((_) {
- expect(element.scaryMonster.health, 200);
- expect(element.bindFinishedCalled, 0);
- });
- });
-
- test('template bind uses overridden custom element bind', () {
-
- var model = toObservable({'a': new Point(123, 444), 'b': new Monster(100)});
- var div = createTestHtml('<template bind>'
- '<my-custom-element my-point="{{a}}" scary-monster="{{b}}">'
- '</my-custom-element>'
- '</template>');
-
- templateBind(div.query('template')).model = model;
- var element;
- return new Future(() {
- element = div.nodes[1];
-
- expect(element is MyCustomElement, true,
- reason: '$element should be a MyCustomElement');
-
- expect(element.myPoint, model['a']);
- expect(element.scaryMonster, model['b']);
-
- expect(element.attributes, isNot(contains('my-point')));
- expect(element.attributes, isNot(contains('scary-monster')));
-
- expect(element.bindFinishedCalled, 1);
-
- model['a'] = null;
- }).then(endOfMicrotask).then((_) {
- expect(element.myPoint, null);
- expect(element.bindFinishedCalled, 1);
-
-
- templateBind(div.query('template')).model = null;
- }).then(endOfMicrotask).then((_) {
- // Note: the detached element
- expect(element.parentNode is DocumentFragment, true,
- reason: 'removed element is added back to its document fragment');
- expect(element.parentNode.parentNode, null,
- reason: 'document fragment is detached');
- expect(element.bindFinishedCalled, 1);
-
- model['a'] = new Point(1, 2);
- model['b'] = new Monster(200);
- }).then(endOfMicrotask).then((_) {
- expect(element.myPoint, null, reason: 'model was unbound');
- expect(element.scaryMonster.health, 100, reason: 'model was unbound');
- expect(element.bindFinishedCalled, 1);
- });
- });
-
-}
-
-class Monster {
- int health;
- Monster(this.health);
-}
-
-/** Demonstrates a custom element overriding bind/bindFinished. */
-class MyCustomElement extends HtmlElement implements NodeBindExtension {
- Point myPoint;
- Monster scaryMonster;
- int bindFinishedCalled = 0;
-
- factory MyCustomElement() => new Element.tag('my-custom-element');
-
- MyCustomElement.created() : super.created();
-
- Bindable bind(String name, value, {oneTime: false}) {
- switch (name) {
- case 'my-point':
- case 'scary-monster':
- attributes.remove(name);
- if (oneTime) {
- _setProperty(name, value);
- return null;
- }
- _setProperty(name, value.open((x) => _setProperty(name, x)));
-
- if (!enableBindingsReflection) return value;
- if (bindings == null) bindings = {};
- var old = bindings[name];
- if (old != null) old.close();
- return bindings[name] = value;
- }
- return nodeBindFallback(this).bind(name, value, oneTime: oneTime);
- }
-
- void bindFinished() {
- bindFinishedCalled++;
- }
-
- get bindings => nodeBindFallback(this).bindings;
- set bindings(x) => nodeBindFallback(this).bindings = x;
- get templateInstance => nodeBindFallback(this).templateInstance;
-
- void _setProperty(String property, newValue) {
- if (property == 'my-point') myPoint = newValue;
- if (property == 'scary-monster') scaryMonster = newValue;
- }
-}
-
« no previous file with comments | « packages/template_binding/test/binding_syntax.dart ('k') | packages/template_binding/test/custom_element_bindings_test.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698