feat(ChangeDetector): implement enabling/disabling records

This commit is contained in:
vsavkin
2014-11-14 15:35:41 -08:00
parent 8dfbc242af
commit daf8f72b74
5 changed files with 238 additions and 26 deletions

View File

@ -152,13 +152,36 @@ export function main() {
expect(executeWatch('m', '1 > 2 ? 1 : 2')).toEqual(['m=2']);
});
it("should support formatters", () => {
var formatters = MapWrapper.createFromPairs([
["uppercase", (v) => v.toUpperCase()],
["wrap", (v, before, after) => `${before}${v}${after}`]
]);
expect(executeWatch('str', '"aBc" | uppercase', null, formatters)).toEqual(['str=ABC']);
expect(executeWatch('str', '"b" | wrap:"a":"c"', null, formatters)).toEqual(['str=abc']);
describe("formatters", () => {
it("should support formatters", () => {
var formatters = MapWrapper.createFromPairs([
['uppercase', (v) => v.toUpperCase()],
['wrap', (v, before, after) => `${before}${v}${after}`]]);
expect(executeWatch('str', '"aBc" | uppercase', null, formatters)).toEqual(['str=ABC']);
expect(executeWatch('str', '"b" | wrap:"a":"c"', null, formatters)).toEqual(['str=abc']);
});
it("should rerun formatters only when arguments change", () => {
var counter = 0;
var formatters = MapWrapper.createFromPairs([
['formatter', (_) => {counter += 1; return 'value'}]
]);
var person = new Person('Jim');
var c = createChangeDetector('formatter', 'name | formatter', person, formatters);
var cd = c['changeDetector'];
cd.detectChanges();
expect(counter).toEqual(1);
cd.detectChanges();
expect(counter).toEqual(1);
person.name = 'bob';
cd.detectChanges();
expect(counter).toEqual(2);
});
});
});
});