| Index: test/src/common/polymer_mixin_test.dart
|
| diff --git a/test/src/common/polymer_mixin_test.dart b/test/src/common/polymer_mixin_test.dart
|
| index 1a968dacc60d2ddd1f1085a7ad91d3d9b6297115..455b30e476649ac89170b626c1eefbcb06fc7726 100644
|
| --- a/test/src/common/polymer_mixin_test.dart
|
| +++ b/test/src/common/polymer_mixin_test.dart
|
| @@ -10,12 +10,14 @@ import 'package:polymer/polymer.dart';
|
| import 'package:test/test.dart';
|
|
|
| TestElement element;
|
| +SubElement subElement;
|
|
|
| main() async {
|
| await initPolymer();
|
|
|
| setUp(() {
|
| element = document.createElement('test-element');
|
| + subElement = element.$['sub'];
|
| });
|
|
|
| test('default values', () {
|
| @@ -23,17 +25,80 @@ main() async {
|
| expect(element.jsElement['myInt'], 1);
|
| });
|
|
|
| - test('set', () {
|
| - element.set('myInt', 2);
|
| - expect(element.myInt, 2);
|
| - expect(element.jsElement['myInt'], 2);
|
| + group('set', () {
|
| + test('basic', () {
|
| + element.set('myInt', 2);
|
| + expect(element.myInt, 2);
|
| + expect(element.jsElement['myInt'], 2);
|
| + });
|
| +
|
| + test('Map', () {
|
| + element.set('myMap.hello', 'world');
|
| + expect(element.myMap['hello'], 'world');
|
| + expect(element.jsElement['myMap']['hello'], 'world');
|
| + });
|
| +
|
| + test('List', () {
|
| + element.set('myInts', [1, 2, 3]);
|
| + expect(element.myInts, [1, 2, 3]);
|
| + expect(element.jsElement['myInts'], [1, 2, 3]);
|
| +
|
| + element.set('myInts.1', 4);
|
| + expect(element.myInts, [1, 4, 3]);
|
| + expect(element.jsElement['myInts'], [1, 4, 3]);
|
| + });
|
| +
|
| + test('JsProxy', () {
|
| + var newModel = new Model('world');
|
| + element.set('myModel', newModel);
|
| + expect(element.myModel, newModel);
|
| + expect(element.jsElement['myModel'], newModel.jsProxy);
|
| +
|
| + element.set('myModel.value', 'cool');
|
| + expect(element.myModel.value, 'cool');
|
| + expect(element.jsElement['myModel']['value'], 'cool');
|
| + });
|
| });
|
|
|
| - test('notifyPath', () {
|
| - element.myInt = 2;
|
| - expect(element.jsElement['myInt'], 1);
|
| - element.notifyPath('myInt', 2);
|
| - expect(element.jsElement['myInt'], 2);
|
| + group('notifyPath', () {
|
| + test('basic', () {
|
| + element.myInt = 2;
|
| + expect(element.jsElement['myInt'], 1);
|
| + element.notifyPath('myInt', 2);
|
| + expect(element.jsElement['myInt'], 2);
|
| + });
|
| +
|
| + test('Map', () {
|
| + element.myMap['hello'] = 'world';
|
| + expect(element.get('myMap.hello'), null);
|
| + element.notifyPath('myMap.hello', element.myMap['hello']);
|
| + expect(element.jsElement['myMap']['hello'], 'world');
|
| + });
|
| +
|
| + test('List', () {
|
| + element.myInts = [1, 2, 3];
|
| + expect(element.jsElement['myInts'], []);
|
| + element.notifyPath('myInts', element.myInts);
|
| + expect(element.jsElement['myInts'], [1, 2, 3]);
|
| +
|
| + element.myInts[1] = 4;
|
| + expect(element.jsElement['myInts'], [1, 2, 3]);
|
| + element.notifyPath('myInts.1', element.myInts[1]);
|
| + expect(element.myInts, [1, 4, 3]);
|
| + expect(element.jsElement['myInts'], [1, 4, 3]);
|
| + });
|
| +
|
| + test('JsProxy', () {
|
| + element.myModel = new Model('world');
|
| + expect(element.jsElement['myModel']['value'], 'hello');
|
| + element.notifyPath('myModel', element.myModel);
|
| + expect(element.jsElement['myModel']['value'], 'world');
|
| +
|
| + element.myModel.value = 'cool';
|
| + expect(subElement.$['modelValue'].text, 'world');
|
| + element.notifyPath('myModel.value', element.myModel.value);
|
| + expect(subElement.$['modelValue'].text, 'cool');
|
| + });
|
| });
|
|
|
| test('\$', () {
|
| @@ -210,7 +275,34 @@ class TestElement extends HtmlElement with PolymerMixin, PolymerBase, JsProxy {
|
| @property
|
| List<int> myInts = [];
|
|
|
| + @property
|
| + Map myMap = {};
|
| +
|
| + @property
|
| + Model myModel = new Model('hello');
|
| +
|
| TestElement.created() : super.created() {
|
| polymerCreated();
|
| }
|
| }
|
| +
|
| +@PolymerRegister('sub-element')
|
| +class SubElement extends HtmlElement with PolymerMixin, PolymerBase, JsProxy {
|
| + SubElement.created() : super.created() {
|
| + polymerCreated();
|
| + }
|
| +
|
| + @property
|
| + List<int> myInts;
|
| +
|
| + @property
|
| + Map myMap;
|
| +
|
| + @property
|
| + Model myModel;
|
| +}
|
| +
|
| +class Model extends JsProxy {
|
| + String value;
|
| + Model(this.value);
|
| +}
|
|
|