Skip to content

Commit 0d0b3a3

Browse files
author
Tim Blasi
committed
test(dart/transform): Add unit tests for DirectiveMetadataReader
1 parent cf7bef5 commit 0d0b3a3

File tree

5 files changed

+112
-29
lines changed

5 files changed

+112
-29
lines changed

modules/angular2/test/transform/template_compiler/all_tests.dart

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
library angular2.test.transform.template_compiler.all_tests;
22

3+
import 'dart:async';
34
import 'package:barback/barback.dart';
45
import 'package:angular2/src/dom/html_adapter.dart';
6+
import 'package:angular2/src/render/api.dart';
57
import 'package:angular2/src/transform/common/asset_reader.dart';
68
import 'package:angular2/src/transform/common/parser.dart';
79
import 'package:angular2/src/transform/template_compiler/directive_metadata_reader.dart';
@@ -52,44 +54,49 @@ void allTests() {
5254
});
5355

5456
describe('DirectiveMetadataReader', () {
55-
it('should parse simple expressions in inline templates', () async {
56-
var inputPath =
57-
'template_compiler/inline_expression_files/hello.ng_deps.dart';
57+
Future<DirectiveMetadata> readSingleMetadata(inputPath) async {
5858
var ngDeps = await parser.parse(new AssetId('a', inputPath));
59-
6059
var metadata = readDirectiveMetadata(ngDeps.registeredTypes.first);
61-
expect(metadata.length).toEqual(2);
62-
expect(metadata[0].selector).toEqual('hello-app');
60+
expect(metadata.length).toEqual(1);
61+
return metadata.first;
62+
}
63+
64+
it('should parse selectors', () async {
65+
var metadata = await readSingleMetadata(
66+
'template_compiler/directive_metadata_files/selector.ng_deps.dart');
67+
expect(metadata.selector).toEqual('hello-app');
6368
});
6469

65-
it('should parse simple methods in inline templates', () async {
66-
var inputPath =
67-
'template_compiler/inline_method_files/hello.ng_deps.dart';
68-
var ngDeps = await parser.parse(new AssetId('a', inputPath));
70+
it('should parse compile children values', () async {
71+
var metadata = await readSingleMetadata('template_compiler/'
72+
'directive_metadata_files/compile_children.ng_deps.dart');
73+
expect(metadata.compileChildren).toBeTrue();
6974

70-
var metadata = readDirectiveMetadata(ngDeps.registeredTypes.first);
71-
expect(metadata.length).toEqual(2);
72-
expect(metadata[0].selector).toEqual('hello-app');
75+
metadata = await readSingleMetadata(
76+
'template_compiler/directive_metadata_files/selector.ng_deps.dart');
77+
expect(metadata.compileChildren).toBeFalse();
7378
});
7479

75-
it('should parse simple expressions in linked templates.', () async {
76-
var inputPath =
77-
'template_compiler/url_expression_files/hello.ng_deps.dart';
78-
var ngDeps = await parser.parse(new AssetId('a', inputPath));
79-
80-
var metadata = readDirectiveMetadata(ngDeps.registeredTypes.first);
81-
expect(metadata.length).toEqual(2);
82-
expect(metadata[0].selector).toEqual('hello-app');
80+
it('should parse properties.', () async {
81+
var metadata = await readSingleMetadata('template_compiler/'
82+
'directive_metadata_files/properties.ng_deps.dart');
83+
expect(metadata.properties).toBeNotNull();
84+
expect(metadata.properties.length).toBe(2);
85+
expect(metadata.properties).toContain('key1');
86+
expect(metadata.properties['key1']).toEqual('val1');
87+
expect(metadata.properties).toContain('key2');
88+
expect(metadata.properties['key2']).toEqual('val2');
8389
});
8490

85-
it('should parse simple methods in linked templates.', () async {
86-
var inputPath =
87-
'template_compiler/url_method_files/hello.ng_deps.dart';
88-
var ngDeps = await parser.parse(new AssetId('a', inputPath));
89-
90-
var metadata = readDirectiveMetadata(ngDeps.registeredTypes.first);
91-
expect(metadata.length).toEqual(2);
92-
expect(metadata[0].selector).toEqual('hello-app');
91+
it('should parse host listeners.', () async {
92+
var metadata = await readSingleMetadata('template_compiler/'
93+
'directive_metadata_files/host_listeners.ng_deps.dart');
94+
expect(metadata.hostListeners).toBeNotNull();
95+
expect(metadata.hostListeners.length).toBe(2);
96+
expect(metadata.hostListeners).toContain('change');
97+
expect(metadata.hostListeners['change']).toEqual('onChange(\$event)');
98+
expect(metadata.hostListeners).toContain('keyDown');
99+
expect(metadata.hostListeners['keyDown']).toEqual('onKeyDown(\$event)');
93100
});
94101
});
95102
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
library examples.hello_world.index_common_dart.ng_deps.dart;
2+
3+
import 'hello.dart';
4+
import 'package:angular2/angular2.dart'
5+
show bootstrap, Component, Decorator, View, NgElement;
6+
7+
bool _visited = false;
8+
void initReflector(reflector) {
9+
if (_visited) return;
10+
_visited = true;
11+
reflector
12+
..registerType(HelloCmp, {
13+
'factory': () => new HelloCmp(),
14+
'parameters': const [const []],
15+
'annotations': const [const Decorator(compileChildren: true)]
16+
});
17+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
library examples.hello_world.index_common_dart.ng_deps.dart;
2+
3+
import 'hello.dart';
4+
import 'package:angular2/angular2.dart'
5+
show bootstrap, Component, Decorator, View, NgElement;
6+
7+
bool _visited = false;
8+
void initReflector(reflector) {
9+
if (_visited) return;
10+
_visited = true;
11+
reflector
12+
..registerType(HelloCmp, {
13+
'factory': () => new HelloCmp(),
14+
'parameters': const [const []],
15+
'annotations': const [
16+
const Component(
17+
hostListeners: const {
18+
'change': 'onChange(\$event)',
19+
'keyDown': 'onKeyDown(\$event)'
20+
})
21+
]
22+
});
23+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
library examples.hello_world.index_common_dart.ng_deps.dart;
2+
3+
import 'hello.dart';
4+
import 'package:angular2/angular2.dart'
5+
show bootstrap, Component, Decorator, View, NgElement;
6+
7+
bool _visited = false;
8+
void initReflector(reflector) {
9+
if (_visited) return;
10+
_visited = true;
11+
reflector
12+
..registerType(HelloCmp, {
13+
'factory': () => new HelloCmp(),
14+
'parameters': const [const []],
15+
'annotations': const [
16+
const Component(properties: const {'key1': 'val1', 'key2': 'val2'})
17+
]
18+
});
19+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
library examples.hello_world.index_common_dart.ng_deps.dart;
2+
3+
import 'hello.dart';
4+
import 'package:angular2/angular2.dart'
5+
show bootstrap, Component, Decorator, View, NgElement;
6+
7+
bool _visited = false;
8+
void initReflector(reflector) {
9+
if (_visited) return;
10+
_visited = true;
11+
reflector
12+
..registerType(HelloCmp, {
13+
'factory': () => new HelloCmp(),
14+
'parameters': const [const []],
15+
'annotations': const [const Component(selector: 'hello-app')]
16+
});
17+
}

0 commit comments

Comments
 (0)