refactor(dart/transform): Compose NgDepsModel & NgMeta phases
Link `NgDeps` & `NgMeta` data in the same phase to avoid unnecessary asset creation & reading. Remove `NgMeta#exports` and instead use `NgDeps#exports` to link `NgMeta` files in `ng_meta_linker.dart`.
This commit is contained in:
@ -0,0 +1,43 @@
|
||||
library angular2.test.transform.common.ng_meta_helper;
|
||||
|
||||
import 'package:angular2/src/core/compiler/directive_metadata.dart';
|
||||
import 'package:angular2/src/core/change_detection/change_detection.dart';
|
||||
import 'package:angular2/src/core/metadata/view.dart' show ViewEncapsulation;
|
||||
|
||||
export 'package:angular2/src/core/compiler/directive_metadata.dart';
|
||||
export 'package:angular2/src/core/change_detection/change_detection.dart';
|
||||
export 'package:angular2/src/core/metadata/view.dart' show ViewEncapsulation;
|
||||
export 'package:angular2/src/transform/common/model/ng_deps_model.pb.dart';
|
||||
export 'package:angular2/src/transform/common/ng_meta.dart';
|
||||
|
||||
CompileDirectiveMetadata createComponentMetadataForTest(
|
||||
{String name: 'TestMetadata',
|
||||
moduleUrl: 'asset:angular2/test/test.dart',
|
||||
selector: '[test]',
|
||||
String template: 'Test'}) {
|
||||
return createDirectiveMetadataForTest(
|
||||
name: name,
|
||||
moduleUrl: moduleUrl,
|
||||
selector: selector,
|
||||
template: new CompileTemplateMetadata(
|
||||
encapsulation: ViewEncapsulation.Emulated, template: template));
|
||||
}
|
||||
|
||||
CompileDirectiveMetadata createDirectiveMetadataForTest(
|
||||
{String name: 'TestMetadata',
|
||||
String moduleUrl: 'asset:angular2/test/test.dart',
|
||||
String selector: '[test]',
|
||||
CompileTemplateMetadata template: null}) {
|
||||
return CompileDirectiveMetadata.create(
|
||||
type: new CompileTypeMetadata(name: name, moduleUrl: moduleUrl),
|
||||
isComponent: false,
|
||||
dynamicLoadable: true,
|
||||
selector: selector,
|
||||
exportAs: null,
|
||||
changeDetection: ChangeDetectionStrategy.Default,
|
||||
inputs: [],
|
||||
outputs: [],
|
||||
host: {},
|
||||
lifecycleHooks: [],
|
||||
template: template);
|
||||
}
|
@ -0,0 +1,166 @@
|
||||
library angular2.test.transform.common.url_resolver_tests;
|
||||
|
||||
import 'package:angular2/src/transform/common/url_resolver.dart';
|
||||
import 'package:barback/barback.dart';
|
||||
import 'package:guinness/guinness.dart';
|
||||
|
||||
main() => allTests();
|
||||
|
||||
void allTests() {
|
||||
var urlResolver = const TransformerUrlResolver();
|
||||
|
||||
describe('toAssetUri', () {
|
||||
it('should convert `AssetId`s to asset: uris', () {
|
||||
var assetId = new AssetId('test_package', 'lib/src/impl.dart');
|
||||
expect(toAssetUri(assetId))
|
||||
.toEqual('asset:test_package/lib/src/impl.dart');
|
||||
});
|
||||
|
||||
it('should throw if passed a null AssetId', () {
|
||||
expect(() => toAssetUri(null)).toThrowWith(anInstanceOf: ArgumentError);
|
||||
});
|
||||
});
|
||||
|
||||
describe('fromUri', () {
|
||||
it('should convert asset: `uri`s to `AssetId`s', () {
|
||||
expect(fromUri('asset:test_package/lib/src/impl.dart'))
|
||||
.toEqual(new AssetId('test_package', 'lib/src/impl.dart'));
|
||||
});
|
||||
|
||||
it('should convert package: `uri`s to `AssetId`s', () {
|
||||
expect(fromUri('package:test_package/src/impl.dart'))
|
||||
.toEqual(new AssetId('test_package', 'lib/src/impl.dart'));
|
||||
});
|
||||
|
||||
it('should throw if passed a null uri', () {
|
||||
expect(() => fromUri(null)).toThrowWith(anInstanceOf: ArgumentError);
|
||||
});
|
||||
|
||||
it('should throw if passed an empty uri', () {
|
||||
expect(() => fromUri('')).toThrowWith(anInstanceOf: ArgumentError);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isDartCoreUri', () {
|
||||
it('should detect dart: uris', () {
|
||||
expect(isDartCoreUri('dart:core')).toBeTrue();
|
||||
expect(isDartCoreUri('dart:convert')).toBeTrue();
|
||||
expect(isDartCoreUri('package:angular2/angular2.dart')).toBeFalse();
|
||||
expect(isDartCoreUri('asset:angular2/lib/angular2.dart')).toBeFalse();
|
||||
});
|
||||
|
||||
it('should throw if passed a null uri', () {
|
||||
expect(() => isDartCoreUri(null))
|
||||
.toThrowWith(anInstanceOf: ArgumentError);
|
||||
});
|
||||
|
||||
it('should throw if passed an empty uri', () {
|
||||
expect(() => isDartCoreUri('')).toThrowWith(anInstanceOf: ArgumentError);
|
||||
});
|
||||
});
|
||||
|
||||
describe('toAssetScheme', () {
|
||||
it('should throw for relative `Uri`s', () {
|
||||
expect(() => toAssetScheme(Uri.parse('/lib/src/file.dart')))
|
||||
.toThrowWith(anInstanceOf: ArgumentError);
|
||||
});
|
||||
|
||||
it('should convert package: `Uri`s to asset:', () {
|
||||
expect(toAssetScheme(Uri.parse('package:angular2/angular2.dart')))
|
||||
.toEqual(Uri.parse('asset:angular2/lib/angular2.dart'));
|
||||
});
|
||||
|
||||
it('should throw for package: `Uri`s which are too short', () {
|
||||
expect(() => toAssetScheme(Uri.parse('package:angular2')))
|
||||
.toThrowWith(anInstanceOf: FormatException);
|
||||
});
|
||||
|
||||
it('should convert asset: `Uri`s to asset:', () {
|
||||
expect(toAssetScheme(Uri.parse('asset:angular2/lib/angular2.dart')))
|
||||
.toEqual(Uri.parse('asset:angular2/lib/angular2.dart'));
|
||||
});
|
||||
|
||||
it('should throw for asset: `Uri`s which are too short', () {
|
||||
expect(() => toAssetScheme(Uri.parse('asset:angular2')))
|
||||
.toThrowWith(anInstanceOf: FormatException);
|
||||
|
||||
expect(() => toAssetScheme(Uri.parse('asset:angular2/lib')))
|
||||
.toThrowWith(anInstanceOf: FormatException);
|
||||
});
|
||||
|
||||
it('should throw for unsupported schemes', () {
|
||||
expect(() => toAssetScheme(Uri.parse('file:///angular2')))
|
||||
.toThrowWith(anInstanceOf: FormatException);
|
||||
});
|
||||
|
||||
it('should throw if passed a null uri', () {
|
||||
expect(() => toAssetScheme(null))
|
||||
.toThrowWith(anInstanceOf: ArgumentError);
|
||||
});
|
||||
});
|
||||
|
||||
describe('resolve', () {
|
||||
it('should resolve package: uris to asset: uris', () {
|
||||
expect(urlResolver.resolve('', 'package:angular2/angular2.dart'))
|
||||
.toEqual('asset:angular2/lib/angular2.dart');
|
||||
});
|
||||
|
||||
it('should ignore baseUrl for absolute uris', () {
|
||||
expect(urlResolver.resolve(null, 'package:angular2/angular2.dart'))
|
||||
.toEqual('asset:angular2/lib/angular2.dart');
|
||||
expect(urlResolver.resolve(null, 'asset:angular2/lib/angular2.dart'))
|
||||
.toEqual('asset:angular2/lib/angular2.dart');
|
||||
});
|
||||
|
||||
it('should resolve asset: uris to asset: uris', () {
|
||||
expect(urlResolver.resolve('', 'asset:angular2/lib/angular2.dart'))
|
||||
.toEqual('asset:angular2/lib/angular2.dart');
|
||||
});
|
||||
|
||||
it('should resolve relative uris when baseUrl is package: uri', () {
|
||||
expect(urlResolver.resolve('package:angular2/angular2.dart',
|
||||
'src/transform/transformer.dart'))
|
||||
.toEqual('asset:angular2/lib/src/transform/transformer.dart');
|
||||
});
|
||||
|
||||
it('should resolve relative uris when baseUrl is asset: uri', () {
|
||||
expect(urlResolver.resolve('asset:angular2/lib/angular2.dart',
|
||||
'src/transform/transformer.dart'))
|
||||
.toEqual('asset:angular2/lib/src/transform/transformer.dart');
|
||||
});
|
||||
|
||||
it('should normalize uris', () {
|
||||
expect(urlResolver.resolve('asset:angular2/lib/angular2.dart',
|
||||
'src/transform/../transform/transformer.dart'))
|
||||
.toEqual('asset:angular2/lib/src/transform/transformer.dart');
|
||||
expect(urlResolver.resolve('asset:angular2/lib/src/../angular2.dart',
|
||||
'src/transform/transformer.dart'))
|
||||
.toEqual('asset:angular2/lib/src/transform/transformer.dart');
|
||||
});
|
||||
|
||||
it('should throw if passed a null uri', () {
|
||||
expect(() => urlResolver.resolve('package:angular2/angular2.dart', null))
|
||||
.toThrowWith(anInstanceOf: ArgumentError);
|
||||
});
|
||||
|
||||
it('should gracefully handle an empty uri', () {
|
||||
expect(urlResolver.resolve('package:angular2/angular2.dart', ''))
|
||||
.toEqual('asset:angular2/lib/angular2.dart');
|
||||
});
|
||||
|
||||
it('should throw if passed a relative uri and a null baseUri', () {
|
||||
expect(() => urlResolver.resolve(null, 'angular2/angular2.dart'))
|
||||
.toThrowWith(anInstanceOf: ArgumentError);
|
||||
});
|
||||
|
||||
it('should throw if passed a relative uri and an empty baseUri', () {
|
||||
expect(() => urlResolver.resolve('', 'angular2/angular2.dart'))
|
||||
.toThrowWith(anInstanceOf: ArgumentError);
|
||||
});
|
||||
|
||||
it('should throw if the resolved uri is relative', () {
|
||||
expect(() => urlResolver.resolve('/angular2/', 'angular2.dart'))
|
||||
.toThrowWith(anInstanceOf: ArgumentError);
|
||||
});
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user