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

Unified Diff: pkg/template_binding/test/element_bindings_test.dart

Issue 42433002: port Node.bind to bd0a0591920da9091b326627a46a104a92c7efe7 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 2 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: pkg/template_binding/test/element_bindings_test.dart
diff --git a/pkg/template_binding/test/element_bindings_test.dart b/pkg/template_binding/test/element_bindings_test.dart
deleted file mode 100644
index 56c42c485ebc30d27cca918cf58e94117f4d48e9..0000000000000000000000000000000000000000
--- a/pkg/template_binding/test/element_bindings_test.dart
+++ /dev/null
@@ -1,397 +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.element_bindings_test;
Jennifer Messerly 2013/10/25 00:51:41 most of these tests moved into the node.bind conso
-
-import 'dart:html';
-import 'package:observe/observe.dart';
-import 'package:template_binding/template_binding.dart';
-import 'package:unittest/html_config.dart';
-import 'package:unittest/unittest.dart';
-import 'utils.dart';
-
-// Note: this file ported from
-// https://github.com/toolkitchen/mdv/blob/master/tests/element_bindings.js
-
-main() {
- useHtmlConfiguration();
- group('Element Bindings', elementBindingTests);
-}
-
-observePath(obj, path) => new PathObserver(obj, path);
-
-elementBindingTests() {
- setUp(() {
- document.body.append(testDiv = new DivElement());
- });
-
- tearDown(() {
- testDiv.remove();
- testDiv = null;
- });
-
- observeTest('Text', () {
- var template = new Element.html('<template bind>{{a}} and {{b}}');
- testDiv.append(template);
- var model = toObservable({'a': 1, 'b': 2});
- templateBind(template).model = model;
- performMicrotaskCheckpoint();
- var text = testDiv.nodes[1];
- expect(text.text, '1 and 2');
-
- model['a'] = 3;
- performMicrotaskCheckpoint();
- expect(text.text, '3 and 2');
- });
-
- observeTest('SimpleBinding', () {
- var el = new DivElement();
- var model = toObservable({'a': '1'});
- nodeBind(el).bind('foo', model, 'a');
- performMicrotaskCheckpoint();
- expect(el.attributes['foo'], '1');
-
- model['a'] = '2';
- performMicrotaskCheckpoint();
- expect(el.attributes['foo'], '2');
-
- model['a'] = 232.2;
- performMicrotaskCheckpoint();
- expect(el.attributes['foo'], '232.2');
-
- model['a'] = 232;
- performMicrotaskCheckpoint();
- expect(el.attributes['foo'], '232');
-
- model['a'] = null;
- performMicrotaskCheckpoint();
- expect(el.attributes['foo'], '');
- });
-
- observeTest('SimpleBindingWithDashes', () {
- var el = new DivElement();
- var model = toObservable({'a': '1'});
- nodeBind(el).bind('foo-bar', model, 'a');
- performMicrotaskCheckpoint();
- expect(el.attributes['foo-bar'], '1');
-
- model['a'] = '2';
- performMicrotaskCheckpoint();
- expect(el.attributes['foo-bar'], '2');
- });
-
- observeTest('SimpleBindingWithComment', () {
- var el = new DivElement();
- el.innerHtml = '<!-- Comment -->';
- var model = toObservable({'a': '1'});
- nodeBind(el).bind('foo-bar', model, 'a');
- performMicrotaskCheckpoint();
- expect(el.attributes['foo-bar'], '1');
-
- model['a'] = '2';
- performMicrotaskCheckpoint();
- expect(el.attributes['foo-bar'], '2');
- });
-
- observeTest('PlaceHolderBindingText', () {
- var model = toObservable({
- 'adj': 'cruel',
- 'noun': 'world'
- });
-
- var el = new DivElement();
- el.text = 'dummy';
- el.nodes.first.text = 'Hello {{ adj }} {{noun}}!';
- var template = new Element.html('<template bind>');
- templateBind(template).content.append(el);
- testDiv.append(template);
- templateBind(template).model = model;
-
- performMicrotaskCheckpoint();
- el = testDiv.nodes[1].nodes.first;
- expect(el.text, 'Hello cruel world!');
-
- model['adj'] = 'happy';
- performMicrotaskCheckpoint();
- expect(el.text, 'Hello happy world!');
- });
-
- observeTest('InputElementTextBinding', () {
- var model = toObservable({'val': 'ping'});
-
- var el = new InputElement();
- nodeBind(el).bind('value', model, 'val');
- performMicrotaskCheckpoint();
- expect(el.value, 'ping');
-
- el.value = 'pong';
- dispatchEvent('input', el);
- expect(model['val'], 'pong');
-
- // Try a deep path.
- model = toObservable({'a': {'b': {'c': 'ping'}}});
-
- nodeBind(el).bind('value', model, 'a.b.c');
- performMicrotaskCheckpoint();
- expect(el.value, 'ping');
-
- el.value = 'pong';
- dispatchEvent('input', el);
- expect(observePath(model, 'a.b.c').value, 'pong');
-
- // Start with the model property being absent.
- model['a']['b'].remove('c');
- performMicrotaskCheckpoint();
- expect(el.value, '');
-
- el.value = 'pong';
- dispatchEvent('input', el);
- expect(observePath(model, 'a.b.c').value, 'pong');
- performMicrotaskCheckpoint();
-
- // Model property unreachable (and unsettable).
- model['a'].remove('b');
- performMicrotaskCheckpoint();
- expect(el.value, '');
-
- el.value = 'pong';
- dispatchEvent('input', el);
- expect(observePath(model, 'a.b.c').value, null);
- });
-
- observeTest('InputElementCheckbox', () {
- var model = toObservable({'val': true});
-
- var el = new InputElement();
- testDiv.append(el);
- el.type = 'checkbox';
- nodeBind(el).bind('checked', model, 'val');
- performMicrotaskCheckpoint();
- expect(el.checked, true);
-
- model['val'] = false;
- performMicrotaskCheckpoint();
- expect(el.checked, false);
-
- el.click();
- expect(model['val'], true);
-
- el.click();
- expect(model['val'], false);
-
- el.onClick.listen((_) {
- expect(model['val'], true);
- });
- el.onChange.listen((_) {
- expect(model['val'], true);
- });
-
- el.dispatchEvent(new MouseEvent('click', view: window));
- });
-
- observeTest('InputElementCheckbox - binding updated on click', () {
- var model = toObservable({'val': true});
-
- var el = new InputElement();
- testDiv.append(el);
- el.type = 'checkbox';
- nodeBind(el).bind('checked', model, 'val');
- performMicrotaskCheckpoint();
- expect(el.checked, true);
-
- el.onClick.listen((_) {
- expect(model['val'], false);
- });
-
- el.dispatchEvent(new MouseEvent('click', view: window));
- });
-
- observeTest('InputElementCheckbox - binding updated on change', () {
- var model = toObservable({'val': true});
-
- var el = new InputElement();
- testDiv.append(el);
- el.type = 'checkbox';
- nodeBind(el).bind('checked', model, 'val');
- performMicrotaskCheckpoint();
- expect(el.checked, true);
-
- el.onChange.listen((_) {
- expect(model['val'], false);
- });
-
- el.dispatchEvent(new MouseEvent('click', view: window));
- });
-
- observeTest('InputElementRadio', () {
- var model = toObservable({'val1': true, 'val2': false, 'val3': false,
- 'val4': true});
- var RADIO_GROUP_NAME = 'observeTest';
-
- var container = testDiv;
-
- var el1 = new InputElement();
- testDiv.append(el1);
- el1.type = 'radio';
- el1.name = RADIO_GROUP_NAME;
- nodeBind(el1).bind('checked', model, 'val1');
-
- var el2 = new InputElement();
- testDiv.append(el2);
- el2.type = 'radio';
- el2.name = RADIO_GROUP_NAME;
- nodeBind(el2).bind('checked', model, 'val2');
-
- var el3 = new InputElement();
- testDiv.append(el3);
- el3.type = 'radio';
- el3.name = RADIO_GROUP_NAME;
- nodeBind(el3).bind('checked', model, 'val3');
-
- var el4 = new InputElement();
- testDiv.append(el4);
- el4.type = 'radio';
- el4.name = 'othergroup';
- nodeBind(el4).bind('checked', model, 'val4');
-
- performMicrotaskCheckpoint();
- expect(el1.checked, true);
- expect(el2.checked, false);
- expect(el3.checked, false);
- expect(el4.checked, true);
-
- model['val1'] = false;
- model['val2'] = true;
- performMicrotaskCheckpoint();
- expect(el1.checked, false);
- expect(el2.checked, true);
- expect(el3.checked, false);
- expect(el4.checked, true);
-
- el1.checked = true;
- dispatchEvent('change', el1);
- expect(model['val1'], true);
- expect(model['val2'], false);
- expect(model['val3'], false);
- expect(model['val4'], true);
-
- el3.checked = true;
- dispatchEvent('change', el3);
- expect(model['val1'], false);
- expect(model['val2'], false);
- expect(model['val3'], true);
- expect(model['val4'], true);
- });
-
- observeTest('InputElementRadioMultipleForms', () {
- var model = toObservable({'val1': true, 'val2': false, 'val3': false,
- 'val4': true});
- var RADIO_GROUP_NAME = 'observeTest';
-
- var form1 = new FormElement();
- testDiv.append(form1);
- var form2 = new FormElement();
- testDiv.append(form2);
-
- var el1 = new InputElement();
- form1.append(el1);
- el1.type = 'radio';
- el1.name = RADIO_GROUP_NAME;
- nodeBind(el1).bind('checked', model, 'val1');
-
- var el2 = new InputElement();
- form1.append(el2);
- el2.type = 'radio';
- el2.name = RADIO_GROUP_NAME;
- nodeBind(el2).bind('checked', model, 'val2');
-
- var el3 = new InputElement();
- form2.append(el3);
- el3.type = 'radio';
- el3.name = RADIO_GROUP_NAME;
- nodeBind(el3).bind('checked', model, 'val3');
-
- var el4 = new InputElement();
- form2.append(el4);
- el4.type = 'radio';
- el4.name = RADIO_GROUP_NAME;
- nodeBind(el4).bind('checked', model, 'val4');
-
- performMicrotaskCheckpoint();
- expect(el1.checked, true);
- expect(el2.checked, false);
- expect(el3.checked, false);
- expect(el4.checked, true);
-
- el2.checked = true;
- dispatchEvent('change', el2);
- expect(model['val1'], false);
- expect(model['val2'], true);
-
- // Radio buttons in form2 should be unaffected
- expect(model['val3'], false);
- expect(model['val4'], true);
-
- el3.checked = true;
- dispatchEvent('change', el3);
- expect(model['val3'], true);
- expect(model['val4'], false);
-
- // Radio buttons in form1 should be unaffected
- expect(model['val1'], false);
- expect(model['val2'], true);
- });
-
- observeTest('BindToChecked', () {
- var div = new DivElement();
- testDiv.append(div);
- var child = new DivElement();
- div.append(child);
- var input = new InputElement();
- child.append(input);
- input.type = 'checkbox';
-
- var model = toObservable({'a': {'b': false}});
- nodeBind(input).bind('checked', model, 'a.b');
-
- input.click();
- expect(model['a']['b'], true);
-
- input.click();
- expect(model['a']['b'], false);
- });
-
- observeTest('Select selectedIndex', () {
- var select = new SelectElement();
- testDiv.append(select);
- var option0 = select.append(new OptionElement());
- var option1 = select.append(new OptionElement());
- var option2 = select.append(new OptionElement());
-
- var model = toObservable({'val': 2});
-
- nodeBind(select).bind('selectedIndex', model, 'val');
- performMicrotaskCheckpoint();
- expect(select.selectedIndex, 2);
-
- select.selectedIndex = 1;
- dispatchEvent('change', select);
- expect(model['val'], 1);
- });
-
- observeTest('MultipleReferences', () {
- var el = new DivElement();
- var template = new Element.html('<template bind>');
- templateBind(template).content.append(el);
- testDiv.append(template);
-
- var model = toObservable({'foo': 'bar'});
- el.attributes['foo'] = '{{foo}} {{foo}}';
- templateBind(template).model = model;
-
- performMicrotaskCheckpoint();
- el = testDiv.nodes[1];
- expect(el.attributes['foo'], 'bar bar');
- });
-}
« no previous file with comments | « pkg/template_binding/test/custom_element_bindings_test.dart ('k') | pkg/template_binding/test/node_bindings_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698