72 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			72 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import {
							 | 
						||
| 
								 | 
							
								  AsyncTestCompleter,
							 | 
						||
| 
								 | 
							
								  beforeEach,
							 | 
						||
| 
								 | 
							
								  ddescribe,
							 | 
						||
| 
								 | 
							
								  describe,
							 | 
						||
| 
								 | 
							
								  el,
							 | 
						||
| 
								 | 
							
								  expect,
							 | 
						||
| 
								 | 
							
								  iit,
							 | 
						||
| 
								 | 
							
								  inject,
							 | 
						||
| 
								 | 
							
								  it,
							 | 
						||
| 
								 | 
							
								  xit,
							 | 
						||
| 
								 | 
							
								  TestComponentBuilder
							 | 
						||
| 
								 | 
							
								} from 'angular2/testing_internal';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import {getImportModulePath, ImportEnv} from 'angular2/src/compiler/output/path_util';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export function main() {
							 | 
						||
| 
								 | 
							
								  describe('PathUtils', () => {
							 | 
						||
| 
								 | 
							
								    describe('getImportModulePath', () => {
							 | 
						||
| 
								 | 
							
								      it('should calculate relative paths for JS and Dart', () => {
							 | 
						||
| 
								 | 
							
								        expect(getImportModulePath('asset:somePkg/lib/modPath', 'asset:somePkg/lib/impPath',
							 | 
						||
| 
								 | 
							
								                                   ImportEnv.JS))
							 | 
						||
| 
								 | 
							
								            .toEqual('./impPath');
							 | 
						||
| 
								 | 
							
								        expect(getImportModulePath('asset:somePkg/lib/modPath', 'asset:somePkg/lib/impPath',
							 | 
						||
| 
								 | 
							
								                                   ImportEnv.Dart))
							 | 
						||
| 
								 | 
							
								            .toEqual('impPath');
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      it('should calculate relative paths for different constellations', () => {
							 | 
						||
| 
								 | 
							
								        expect(getImportModulePath('asset:somePkg/test/modPath', 'asset:somePkg/test/impPath',
							 | 
						||
| 
								 | 
							
								                                   ImportEnv.JS))
							 | 
						||
| 
								 | 
							
								            .toEqual('./impPath');
							 | 
						||
| 
								 | 
							
								        expect(getImportModulePath('asset:somePkg/lib/modPath', 'asset:somePkg/lib/dir2/impPath',
							 | 
						||
| 
								 | 
							
								                                   ImportEnv.JS))
							 | 
						||
| 
								 | 
							
								            .toEqual('./dir2/impPath');
							 | 
						||
| 
								 | 
							
								        expect(getImportModulePath('asset:somePkg/lib/dir1/modPath', 'asset:somePkg/lib/impPath',
							 | 
						||
| 
								 | 
							
								                                   ImportEnv.JS))
							 | 
						||
| 
								 | 
							
								            .toEqual('../impPath');
							 | 
						||
| 
								 | 
							
								        expect(getImportModulePath('asset:somePkg/lib/dir1/modPath',
							 | 
						||
| 
								 | 
							
								                                   'asset:somePkg/lib/dir2/impPath', ImportEnv.JS))
							 | 
						||
| 
								 | 
							
								            .toEqual('../dir2/impPath');
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      it('should calculate absolute paths for JS and Dart', () => {
							 | 
						||
| 
								 | 
							
								        expect(getImportModulePath('asset:somePkg/lib/modPath', 'asset:someOtherPkg/lib/impPath',
							 | 
						||
| 
								 | 
							
								                                   ImportEnv.JS))
							 | 
						||
| 
								 | 
							
								            .toEqual('someOtherPkg/impPath');
							 | 
						||
| 
								 | 
							
								        expect(getImportModulePath('asset:somePkg/lib/modPath', 'asset:someOtherPkg/lib/impPath',
							 | 
						||
| 
								 | 
							
								                                   ImportEnv.Dart))
							 | 
						||
| 
								 | 
							
								            .toEqual('package:someOtherPkg/impPath');
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      it('should not allow absolute imports of non lib modules', () => {
							 | 
						||
| 
								 | 
							
								        expect(() => getImportModulePath('asset:somePkg/lib/modPath', 'asset:somePkg/test/impPath',
							 | 
						||
| 
								 | 
							
								                                         ImportEnv.Dart))
							 | 
						||
| 
								 | 
							
								            .toThrowError(
							 | 
						||
| 
								 | 
							
								                `Can't import url asset:somePkg/test/impPath from asset:somePkg/lib/modPath`);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      it('should not allow non asset urls as base url', () => {
							 | 
						||
| 
								 | 
							
								        expect(() => getImportModulePath('http:somePkg/lib/modPath', 'asset:somePkg/test/impPath',
							 | 
						||
| 
								 | 
							
								                                         ImportEnv.Dart))
							 | 
						||
| 
								 | 
							
								            .toThrowError(`Url http:somePkg/lib/modPath is not a valid asset: url`);
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      it('should allow non asset urls as import urls and pass them through', () => {
							 | 
						||
| 
								 | 
							
								        expect(getImportModulePath('asset:somePkg/lib/modPath', 'dart:html', ImportEnv.Dart))
							 | 
						||
| 
								 | 
							
								            .toEqual('dart:html');
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 |