chore(transformer): add tests for property bindings and multiple executions

This commit is contained in:
Tobias Bosch 2015-06-05 11:10:54 -07:00
parent 87b3b718e3
commit 8a52375fb8
5 changed files with 29 additions and 15 deletions

View File

@ -16,16 +16,14 @@ import {TemplateLoader} from 'angular2/src/render/dom/compiler/template_loader';
import {CompileStepFactory, DefaultStepFactory} from './compile_step_factory';
import {Parser} from 'angular2/change_detection';
import {ShadowDomStrategy} from '../shadow_dom/shadow_dom_strategy';
import {
PropertySetterFactory
} from '../view/property_setter_factory'
import {PropertySetterFactory} from '../view/property_setter_factory';
/**
* The compiler loads and translates the html templates of components into
* nested ProtoViews. To decompose its functionality it uses
* the CompilePipeline and the CompileSteps.
*/
export class DomCompiler extends RenderCompiler {
/**
* The compiler loads and translates the html templates of components into
* nested ProtoViews. To decompose its functionality it uses
* the CompilePipeline and the CompileSteps.
*/
export class DomCompiler extends RenderCompiler {
_templateLoader: TemplateLoader;
_stepFactory: CompileStepFactory;
_propertySetterFactory: PropertySetterFactory;

View File

@ -93,8 +93,8 @@ export class PropertySetterFactory {
var dashCasedClassName;
if (isBlank(setterFn)) {
dashCasedClassName = camelCaseToDashCase(className);
setterFn = (element, value) => {
if (value) {
setterFn = (element, isAdd) => {
if (isAdd) {
DOM.addClass(element, dashCasedClassName);
} else {
DOM.removeClass(element, dashCasedClassName);

View File

@ -92,6 +92,18 @@ void allTests() {
output = await process(new AssetId('a', inputPath));
_formatThenExpectEquals(output, expected);
});
it('should create the same output for multiple calls.', () async {
var inputPath =
'template_compiler/inline_expression_files/hello.ng_deps.dart';
var expected = readFile(
'template_compiler/inline_expression_files/expected/hello.ng_deps.dart');
var output = await process(new AssetId('a', inputPath));
_formatThenExpectEquals(output, expected);
output = await process(new AssetId('a', inputPath));
_formatThenExpectEquals(output, expected);
});
});
}

View File

@ -14,9 +14,13 @@ void initReflector(reflector) {
'parameters': const [const []],
'annotations': const [
const Component(selector: 'hello-app'),
const View(template: '{{greeting}}')
const View(template: '<div [a]="b">{{greeting}}</div>')
]
})
..registerGetters({'greeting': (o) => o.greeting})
..registerSetters({'greeting': (o, v) => o.greeting = v});
..registerGetters({'b': (o) => o.b, 'greeting': (o) => o.greeting})
..registerSetters({
'b': (o, v) => o.b = v,
'greeting': (o, v) => o.greeting = v,
'a': (o, v) => o.a = v
});
}

View File

@ -14,7 +14,7 @@ void initReflector(reflector) {
'parameters': const [const []],
'annotations': const [
const Component(selector: 'hello-app'),
const View(template: '{{greeting}}')
const View(template: '<div [a]="b">{{greeting}}</div>')
]
});
}