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

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

Issue 307793002: update polymer, nodebind, and templatebinding (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: roll Created 6 years, 7 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/binding_syntax.dart
diff --git a/pkg/template_binding/test/binding_syntax.dart b/pkg/template_binding/test/binding_syntax.dart
index f5e6afd947dafeb5b53ee1f478b6fa0869149b77..ab2e1558f135c92c8ff4b07dabfee9833e239618 100644
--- a/pkg/template_binding/test/binding_syntax.dart
+++ b/pkg/template_binding/test/binding_syntax.dart
@@ -22,7 +22,8 @@ syntaxTests(FooBarModel fooModel([foo, bar])) {
'<template bind>{{ foo }}'
'<template bind>{{ foo }}</template>'
'</template>');
- recursivelySetTemplateModel(div, model, testSyntax);
+ var template = templateBind(div.firstChild);
+ template..model = model..bindingDelegate = testSyntax;
Siggi Cherem (dart-lang) 2014/06/03 17:41:03 woah - I have no idea how to parse this :-). Consi
Jennifer Messerly 2014/06/04 04:42:16 added newlines. is it more clear?
Siggi Cherem (dart-lang) 2014/06/04 16:39:10 definitely, the precedence rules of .. have always
Jennifer Messerly 2014/06/04 17:52:16 :). It must've been a search replace. That was ...
return new Future(() {
expect(div.nodes.length, 4);
expect(div.nodes.last.text, 'bar');
@@ -49,7 +50,7 @@ syntaxTests(FooBarModel fooModel([foo, bar])) {
var div = createTestHtml('<template repeat>{{ foo }}</template>');
var template = div.nodes[0];
- recursivelySetTemplateModel(div, model, testSyntax);
+ templateBind(template)..model = model..bindingDelegate = testSyntax;
return new Future(() {
expect(div.nodes.length, 4);
@@ -74,7 +75,7 @@ syntaxTests(FooBarModel fooModel([foo, bar])) {
var template = div.firstChild;
var delegate = new TestInstanceModelSyntax();
- recursivelySetTemplateModel(div, model, delegate);
+ templateBind(template)..model = model..bindingDelegate = delegate;
return new Future(() {
expect(delegate.prepareCount, 1);
expect(delegate.callCount, 3);
@@ -94,7 +95,7 @@ syntaxTests(FooBarModel fooModel([foo, bar])) {
var delegate = new TestPositionChangedSyntax();
var template = div.nodes[0];
- recursivelySetTemplateModel(div, model, delegate);
+ templateBind(template)..model = model..bindingDelegate = delegate;
return new Future(() {
expect(div.nodes.length, 4);
@@ -136,12 +137,23 @@ syntaxTests(FooBarModel fooModel([foo, bar])) {
expect(div.nodes[1].text, 'i:0 - a:1');
expect(div.nodes[2].text, 'i:1 - a:2');
- template.bindingDelegate = new UpdateBindingDelegateB();
+ expect(() {
+ template.bindingDelegate = new UpdateBindingDelegateB();
+ }, throws);
+
+ template.clear();
+ expect(div.nodes.length, 1);
+
+ template
+ ..bindingDelegate = new UpdateBindingDelegateB()
+ ..model = model;
+
model.add(3);
}).then(nextMicrotask).then((_) {
+ // All instances should reflect delegateB
expect(4, div.nodes.length);
- expect(div.nodes[1].text, 'i:0 - a:1');
- expect(div.nodes[2].text, 'i:1 - a:2');
+ expect(div.nodes[1].text, 'I:0 - A:1-narg');
+ expect(div.nodes[2].text, 'I:2 - A:2-narg');
expect(div.nodes[3].text, 'I:4 - A:3-narg');
});
});
@@ -151,7 +163,8 @@ syntaxTests(FooBarModel fooModel([foo, bar])) {
var div = createTestHtml(
'<template bind>'
'{{ foo }} + {{ 2x: bar }} + {{ 4x: bar }}</template>');
- recursivelySetTemplateModel(div, model, new TimesTwoSyntax());
+ var template = templateBind(div.firstChild);
+ template..model = model..bindingDelegate = new TimesTwoSyntax();
return new Future(() {
expect(div.nodes.length, 2);
expect(div.nodes.last.text, '2 + 8 + ');
@@ -163,6 +176,28 @@ syntaxTests(FooBarModel fooModel([foo, bar])) {
});
});
+ test('CreateInstance', () {
+ var delegateFoo = new SimpleTextDelegate('foo');
+ var delegateBar = new SimpleTextDelegate('bar');
+
+ var div = createTestHtml('<template bind>[[ 2x: bar ]]</template>');
+ var template = templateBind(div.firstChild);
+ template..bindingDelegate = delegateFoo..model = {};
+
+ return new Future(() {
+ expect(div.nodes.length, 2);
+ expect(div.lastChild.text, 'foo');
+
+ var fragment = template.createInstance({});
+ expect(fragment.nodes.length, 1);
+ expect(fragment.lastChild.text, 'foo');
+
+ fragment = template.createInstance({}, delegateBar);
+ expect(fragment.nodes.length, 1);
+ expect(fragment.lastChild.text, 'bar');
+ });
+ });
+
// Note: issue-141 test not included here as it's not related to the
// BindingDelegate
}
@@ -186,6 +221,16 @@ class TestBindingSyntax extends BindingDelegate {
}
}
+class SimpleTextDelegate extends BindingDelegate {
+ final String text;
+ SimpleTextDelegate(this.text);
+
+ prepareBinding(path, name, node) {
+ if (name == 'text') return (model, _, oneTime) => text;
+ return null;
+ }
Siggi Cherem (dart-lang) 2014/06/03 17:41:03 nit: maybe use "?:": prepareBinding(path, name, n
Jennifer Messerly 2014/06/04 04:42:16 Done.
+}
+
class TestModelSyntax extends BindingDelegate {
var log = [];
var altModels = new ListQueue();

Powered by Google App Engine
This is Rietveld 408576698