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

Unified Diff: pkg/polymer/test/prop_attr_reflection_test.dart

Issue 29823005: fixes to polymer, gets tests back to a stable state (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
« no previous file with comments | « pkg/polymer/test/instance_attrs_test.dart ('k') | pkg/polymer/test/publish_attributes_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/polymer/test/prop_attr_reflection_test.dart
diff --git a/pkg/polymer/test/prop_attr_reflection_test.dart b/pkg/polymer/test/prop_attr_reflection_test.dart
index 3fd29fd28ef0e945004193aff173901d565b8b72..1bf99ceb616537d35eaf888c63404614c6cd7757 100644
--- a/pkg/polymer/test/prop_attr_reflection_test.dart
+++ b/pkg/polymer/test/prop_attr_reflection_test.dart
@@ -2,6 +2,7 @@
// 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.
+import 'dart:async';
import 'dart:html';
import 'package:unittest/unittest.dart';
import 'package:unittest/html_config.dart';
@@ -30,9 +31,20 @@ class XCompose extends PolymerElement {
@observable bool zim = false;
}
+Future onAttributeChange(Element node) {
+ var completer = new Completer();
+ new MutationObserver((records, observer) {
+ observer.disconnect();
+ completer.complete();
+ })..observe(node, attributes: true);
+ return completer.future;
+}
+
@initMethod _main() {
useHtmlConfiguration();
+ setUp(() => Polymer.onReady);
+
// Most tests use @CustomTag, here we test out the impertive register:
Polymer.register('x-foo', XFoo);
Polymer.register('x-bar', XBar);
@@ -41,9 +53,9 @@ class XCompose extends PolymerElement {
test('property attribute reflection', () {
var xcompose = query('x-compose').xtag;
var xfoo = query('x-foo').xtag;
+ var xbar = query('x-bar').xtag;
xfoo.foo = 5;
- Platform.flush();
- Platform.endOfMicrotask(expectAsync0(() {
+ return onAttributeChange(xfoo).then((_) {
expect(xcompose.$['bar'].attributes.containsKey('zim'), false,
reason: 'attribute bound to property updates when binding is made');
@@ -56,61 +68,51 @@ class XCompose extends PolymerElement {
reason: 'property reflects attribute');
//
xfoo.baz = 'Hello';
- Platform.flush();
- Platform.endOfMicrotask(expectAsync0(() {
- expect(xfoo.baz, xfoo.attributes['baz'],
- reason: 'attribute reflects property');
- //
- var xbar = query('x-bar').xtag;
- //
- xbar.foo = 'foo!';
- xbar.zot = 27;
- xbar.zim = true;
- xbar.str = 'str!';
- xbar.obj = {'hello': 'world'};
- Platform.flush();
- Platform.endOfMicrotask(expectAsync0(() {
- expect(xbar.foo, xbar.attributes['foo'],
- reason: 'inherited published property is reflected');
- expect('${xbar.zot}', xbar.attributes['zot'],
- reason: 'attribute reflects property as number');
- expect(xbar.attributes['zim'], '', reason:
- 'attribute reflects true valued boolean property as '
- 'having attribute');
- expect(xbar.str, xbar.attributes['str'],
- reason: 'attribute reflects property as published string');
- expect(xbar.attributes.containsKey('obj'), false,
- reason: 'attribute does not reflect object property');
- xbar.attributes['zim'] = 'false';
- xbar.attributes['foo'] = 'foo!!';
- xbar.attributes['zot'] = '54';
- xbar.attributes['str'] = 'str!!';
- xbar.attributes['obj'] = "{'hello': 'world'}";
- expect(xbar.foo, xbar.attributes['foo'],
- reason: 'property reflects attribute as string');
- expect(xbar.zot, 54,
- reason: 'property reflects attribute as number');
- expect(xbar.zim, false,
- reason: 'property reflects attribute as boolean');
- expect(xbar.str, 'str!!',
- reason: 'property reflects attribute as published string');
- expect(xbar.obj, {'hello': 'world'},
- reason: 'property reflects attribute as object');
- xbar.zim = false;
- Platform.flush();
- Platform.endOfMicrotask(expectAsync0(() {
- expect(xbar.attributes.containsKey('zim'), false, reason:
- 'attribute reflects false valued boolean property as NOT '
- 'having attribute');
- var objAttr = xbar.attributes['obj'];
- xbar.obj = 'hi';
- Platform.endOfMicrotask(expectAsync0(() {
- expect(xbar.attributes['obj'], objAttr, reason:
- 'do not reflect property with default type of object');
- }));
- }));
- }));
- }));
- }));
+ }).then((_) => onAttributeChange(xfoo)).then((_) {
+ expect(xfoo.baz, xfoo.attributes['baz'],
+ reason: 'attribute reflects property');
+ //
+ xbar.foo = 'foo!';
+ xbar.zot = 27;
+ xbar.zim = true;
+ xbar.str = 'str!';
+ xbar.obj = {'hello': 'world'};
+ }).then((_) => onAttributeChange(xbar)).then((_) {
+ expect(xbar.foo, xbar.attributes['foo'],
+ reason: 'inherited published property is reflected');
+ expect('${xbar.zot}', xbar.attributes['zot'],
+ reason: 'attribute reflects property as number');
+ expect(xbar.attributes['zim'], '', reason:
+ 'attribute reflects true valued boolean property as '
+ 'having attribute');
+ expect(xbar.str, xbar.attributes['str'],
+ reason: 'attribute reflects property as published string');
+ expect(xbar.attributes.containsKey('obj'), false,
+ reason: 'attribute does not reflect object property');
+ xbar.attributes['zim'] = 'false';
+ xbar.attributes['foo'] = 'foo!!';
+ xbar.attributes['zot'] = '54';
+ xbar.attributes['str'] = 'str!!';
+ xbar.attributes['obj'] = "{'hello': 'world'}";
+ expect(xbar.foo, xbar.attributes['foo'],
+ reason: 'property reflects attribute as string');
+ expect(xbar.zot, 54,
+ reason: 'property reflects attribute as number');
+ expect(xbar.zim, false,
+ reason: 'property reflects attribute as boolean');
+ expect(xbar.str, 'str!!',
+ reason: 'property reflects attribute as published string');
+ expect(xbar.obj, {'hello': 'world'},
+ reason: 'property reflects attribute as object');
+ xbar.zim = false;
+ }).then((_) => onAttributeChange(xbar)).then((_) {
+ expect(xbar.attributes.containsKey('zim'), false, reason:
+ 'attribute reflects false valued boolean property as NOT '
+ 'having attribute');
+ xbar.obj = 'hi';
+ }).then((_) => onAttributeChange(xbar)).then((_) {
+ expect(xbar.attributes['obj'], 'hi', reason:
+ 'reflect property based on current type');
+ });
});
}
« no previous file with comments | « pkg/polymer/test/instance_attrs_test.dart ('k') | pkg/polymer/test/publish_attributes_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698