| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library bindings_test; | 5 library bindings_test; |
| 6 | 6 |
| 7 import 'dart:html'; | 7 import 'dart:html'; |
| 8 | 8 |
| 9 import 'package:logging/logging.dart'; | 9 import 'package:logging/logging.dart'; |
| 10 import 'package:mdv/mdv.dart' as mdv; | |
| 11 import 'package:observe/observe.dart'; | 10 import 'package:observe/observe.dart'; |
| 12 import 'package:observe/src/microtask.dart'; | 11 import 'package:observe/src/microtask.dart'; |
| 13 import 'package:polymer_expressions/polymer_expressions.dart'; | 12 import 'package:polymer_expressions/polymer_expressions.dart'; |
| 13 import 'package:template_binding/template_binding.dart' show templateBind; |
| 14 import 'package:unittest/html_config.dart'; | 14 import 'package:unittest/html_config.dart'; |
| 15 import 'package:unittest/unittest.dart'; | 15 import 'package:unittest/unittest.dart'; |
| 16 | 16 |
| 17 main() { | 17 main() { |
| 18 mdv.initialize(); | |
| 19 useHtmlConfiguration(); | 18 useHtmlConfiguration(); |
| 20 | 19 |
| 21 group('bindings', () { | 20 group('bindings', () { |
| 22 var stop = null; | 21 var stop = null; |
| 23 var messages = []; | 22 var messages = []; |
| 24 var testDiv; | 23 var testDiv; |
| 25 setUp(() { | 24 setUp(() { |
| 26 stop = Logger.root.onRecord.listen((r) => messages.add(r)); | 25 stop = Logger.root.onRecord.listen((r) => messages.add(r)); |
| 27 document.body.append(testDiv = new DivElement()); | 26 document.body.append(testDiv = new DivElement()); |
| 28 }); | 27 }); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 41 .getBinding(model, 'x', null, null); | 40 .getBinding(model, 'x', null, null); |
| 42 expect(binding.value, isNull); | 41 expect(binding.value, isNull); |
| 43 model.x = "hi"; | 42 model.x = "hi"; |
| 44 performMicrotaskCheckpoint(); | 43 performMicrotaskCheckpoint(); |
| 45 expect(binding.value, 'hi'); | 44 expect(binding.value, 'hi'); |
| 46 expect(messages.length, 0); | 45 expect(messages.length, 0); |
| 47 }); | 46 }); |
| 48 | 47 |
| 49 observeTest('should update text content when data changes', () { | 48 observeTest('should update text content when data changes', () { |
| 50 var model = new NotifyModel('abcde'); | 49 var model = new NotifyModel('abcde'); |
| 51 var template = new Element.html( | 50 var template = templateBind(new Element.html( |
| 52 '<template><span>{{x}}</span></template>'); | 51 '<template><span>{{x}}</span></template>')); |
| 53 testDiv.append(template.createInstance(model, new PolymerExpressions())); | 52 testDiv.append(template.createInstance(model, new PolymerExpressions())); |
| 54 | 53 |
| 55 performMicrotaskCheckpoint(); | 54 performMicrotaskCheckpoint(); |
| 56 var el = testDiv.query("span"); | 55 var el = testDiv.query("span"); |
| 57 expect(el.text, 'abcde'); | 56 expect(el.text, 'abcde'); |
| 58 expect(model.x, 'abcde'); | 57 expect(model.x, 'abcde'); |
| 59 model.x = '___'; | 58 model.x = '___'; |
| 60 | 59 |
| 61 performMicrotaskCheckpoint(); | 60 performMicrotaskCheckpoint(); |
| 62 expect(model.x, '___'); | 61 expect(model.x, '___'); |
| 63 expect(el.text, '___'); | 62 expect(el.text, '___'); |
| 64 }); | 63 }); |
| 65 | 64 |
| 66 observeTest('should log eval exceptions', () { | 65 observeTest('should log eval exceptions', () { |
| 67 var model = new NotifyModel('abcde'); | 66 var model = new NotifyModel('abcde'); |
| 68 var template = new Element.html( | 67 var template = templateBind(new Element.html( |
| 69 '<template><span>{{foo}}</span></template>'); | 68 '<template><span>{{foo}}</span></template>')); |
| 70 testDiv.append(template.createInstance(model, new PolymerExpressions())); | 69 testDiv.append(template.createInstance(model, new PolymerExpressions())); |
| 71 performMicrotaskCheckpoint(); | 70 performMicrotaskCheckpoint(); |
| 72 expect(messages.length, 1); | 71 expect(messages.length, 1); |
| 73 expect(messages[0].message, | 72 expect(messages[0].message, |
| 74 "Error evaluating expression 'foo': variable 'foo' not found"); | 73 "Error evaluating expression 'foo': variable 'foo' not found"); |
| 75 }); | 74 }); |
| 76 | 75 |
| 77 observeTest('should preserve the cursor position', () { | 76 observeTest('should preserve the cursor position', () { |
| 78 var model = new NotifyModel('abcde'); | 77 var model = new NotifyModel('abcde'); |
| 79 var template = new Element.html( | 78 var template = templateBind(new Element.html( |
| 80 '<template><input id="i1" value={{x}}></template>'); | 79 '<template><input id="i1" value={{x}}></template>')); |
| 81 testDiv.append(template.createInstance(model, new PolymerExpressions())); | 80 testDiv.append(template.createInstance(model, new PolymerExpressions())); |
| 82 | 81 |
| 83 performMicrotaskCheckpoint(); | 82 performMicrotaskCheckpoint(); |
| 84 var el = testDiv.query("#i1"); | 83 var el = testDiv.query("#i1"); |
| 85 var subscription = el.onInput.listen(expectAsync1((_) { | 84 var subscription = el.onInput.listen(expectAsync1((_) { |
| 86 performMicrotaskCheckpoint(); | 85 performMicrotaskCheckpoint(); |
| 87 }, count: 1)); | 86 }, count: 1)); |
| 88 el.focus(); | 87 el.focus(); |
| 89 | 88 |
| 90 expect(el.value, 'abcde'); | 89 expect(el.value, 'abcde'); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 var _x; | 123 var _x; |
| 125 NotifyModel([this._x]); | 124 NotifyModel([this._x]); |
| 126 | 125 |
| 127 get x => _x; | 126 get x => _x; |
| 128 set x(value) { | 127 set x(value) { |
| 129 _x = notifyPropertyChange(#x, _x, value); | 128 _x = notifyPropertyChange(#x, _x, value); |
| 130 } | 129 } |
| 131 } | 130 } |
| 132 | 131 |
| 133 observeTest(name, testCase) => test(name, wrapMicrotask(testCase)); | 132 observeTest(name, testCase) => test(name, wrapMicrotask(testCase)); |
| OLD | NEW |