70 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import {
 | |
|   beforeEach,
 | |
|   ddescribe,
 | |
|   describe,
 | |
|   expect,
 | |
|   iit,
 | |
|   inject,
 | |
|   it,
 | |
|   xit,
 | |
| } from '@angular/core/testing/testing_internal';
 | |
| 
 | |
| import {getImportModulePath, ImportEnv} from '@angular/compiler/src/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');
 | |
|       });
 | |
|     });
 | |
|   });
 | |
| }
 |