chore(transformer): add a test that generated change detectors dont call notifyOnBinding for template variables
This commit is contained in:
parent
b3a763a718
commit
4bdc91892a
|
@ -1248,7 +1248,8 @@ export function main() {
|
|||
if (!IS_DARTIUM) {
|
||||
describe('Missing property bindings', () => {
|
||||
it('should throw on bindings to unknown properties',
|
||||
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => {
|
||||
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder,
|
||||
async) => {
|
||||
tcb =
|
||||
tcb.overrideView(MyComp,
|
||||
new viewAnn.View({template: '<div unknown="{{ctxProp}}"></div>'}))
|
||||
|
@ -1262,7 +1263,8 @@ export function main() {
|
|||
}));
|
||||
|
||||
it('should not throw for property binding to a non-existing property when there is a matching directive property',
|
||||
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => {
|
||||
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder,
|
||||
async) => {
|
||||
tcb.overrideView(
|
||||
MyComp,
|
||||
new viewAnn.View(
|
||||
|
|
|
@ -54,6 +54,18 @@ export function main() {
|
|||
`Can't bind to 'unknownProperty' since it isn't a know property of the 'some-custom' element and there are no matching directives with a corresponding property`);
|
||||
});
|
||||
|
||||
});
|
||||
} else {
|
||||
describe('verification of properties', () => {
|
||||
|
||||
// TODO(tbosch): This is just a temporary test that makes sure that the dart server and
|
||||
// dart browser is in sync. Change this to "not contains notifyBinding"
|
||||
// when https://github.com/angular/angular/issues/3019 is solved.
|
||||
it('should throw for unknown properties', () => {
|
||||
builder.bindElement(el('<div/>')).bindProperty('unknownProperty', emptyExpr());
|
||||
expect(() => builder.build()).not.toThrow();
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -12,16 +12,34 @@ import 'package:guinness/guinness.dart';
|
|||
import '../common/read_file.dart';
|
||||
|
||||
var formatter = new DartFormatter();
|
||||
AssetReader reader = new TestAssetReader();
|
||||
|
||||
main() => allTests();
|
||||
|
||||
void allTests() {
|
||||
Html5LibDomAdapter.makeCurrent();
|
||||
AssetReader reader = new TestAssetReader();
|
||||
|
||||
beforeEach(() => setLogger(new PrintLogger()));
|
||||
|
||||
describe('registrations', () {
|
||||
noChangeDetectorTests();
|
||||
changeDetectorTests();
|
||||
});
|
||||
}
|
||||
|
||||
void changeDetectorTests() {
|
||||
Future<String> process(AssetId assetId) => processTemplates(reader, assetId);
|
||||
|
||||
// TODO(tbosch): This is just a temporary test that makes sure that the dart server and
|
||||
// dart browser is in sync. Change this to "not contains notifyBinding"
|
||||
// when https://github.com/angular/angular/issues/3019 is solved.
|
||||
it('shouldn always notifyBinding for template variables', () async {
|
||||
var inputPath = 'template_compiler/ng_for_files/hello.ng_deps.dart';
|
||||
var output = await(process(new AssetId('a', inputPath)));
|
||||
expect(output).toContain('notifyOnBinding');
|
||||
});
|
||||
}
|
||||
|
||||
void noChangeDetectorTests() {
|
||||
Future<String> process(AssetId assetId) =>
|
||||
processTemplates(reader, assetId, generateChangeDetectors: false);
|
||||
|
||||
|
@ -115,7 +133,6 @@ void allTests() {
|
|||
output = await process(new AssetId('a', inputPath));
|
||||
_formatThenExpectEquals(output, expected);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void _formatThenExpectEquals(String actual, String expected) {
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
library test.src.transform.template_compiler.ng_for_files.hello.ng_deps.dart;
|
||||
|
||||
import 'hello.dart';
|
||||
import 'package:angular2/angular2.dart'
|
||||
show bootstrap, Component, Directive, View, NgElement;
|
||||
|
||||
var _visited = false;
|
||||
void initReflector(reflector) {
|
||||
if (_visited) return;
|
||||
_visited = true;
|
||||
reflector
|
||||
..registerType(HelloCmp, {
|
||||
'factory': () => new HelloCmp(),
|
||||
'parameters': const [const []],
|
||||
'annotations': const [
|
||||
const Component(selector: 'hello-app'),
|
||||
const View(
|
||||
template: '<li *ng-for="#thing of things"><div>test</div></li>',
|
||||
directives: const [NgFor])
|
||||
]
|
||||
});
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"HelloCmp":
|
||||
{
|
||||
"id":"HelloCmp",
|
||||
"selector":"hello-app",
|
||||
"compileChildren":true,
|
||||
"host":{},
|
||||
"properties":[],
|
||||
"readAttributes":[],
|
||||
"type":1,
|
||||
"version":1
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue