This commit makes the Angular Language Service interface a strict subset of TypeScript's Language Service by renaming all methods to be consistent with TypeScript's. The custom Angular `LanguageService` interface was needed before the inception of TypeScript tsserver plugin, but is now obsolete since Angular LS is a proper tsserver plugin. This allows us to easily adapt to upstream TS changes in the future, and also allows us to reuse all data types defined in TypeScript. PR Close #34888
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
/**
 | 
						|
 * @license
 | 
						|
 * Copyright Google Inc. All Rights Reserved.
 | 
						|
 *
 | 
						|
 * Use of this source code is governed by an MIT-style license that can be
 | 
						|
 * found in the LICENSE file at https://angular.io/license
 | 
						|
 */
 | 
						|
 | 
						|
import * as ts from 'typescript';
 | 
						|
 | 
						|
import {createLanguageService} from '../src/language_service';
 | 
						|
import {TypeScriptServiceHost} from '../src/typescript_host';
 | 
						|
 | 
						|
import {MockTypescriptHost} from './test_utils';
 | 
						|
 | 
						|
describe('service without angular', () => {
 | 
						|
  const mockHost = new MockTypescriptHost(['/app/main.ts']);
 | 
						|
  const service = ts.createLanguageService(mockHost);
 | 
						|
  const ngHost = new TypeScriptServiceHost(mockHost, service);
 | 
						|
  const ngService = createLanguageService(ngHost);
 | 
						|
  const fileName = '/app/test.ng';
 | 
						|
  const position = mockHost.getLocationMarkerFor(fileName, 'h1-content').start;
 | 
						|
 | 
						|
  beforeEach(() => { mockHost.reset(); });
 | 
						|
 | 
						|
  it('should not crash a get diagnostics',
 | 
						|
     () => { expect(() => ngService.getSemanticDiagnostics(fileName)).not.toThrow(); });
 | 
						|
 | 
						|
  it('should not crash a completion',
 | 
						|
     () => { expect(() => ngService.getCompletionsAtPosition(fileName, position)).not.toThrow(); });
 | 
						|
 | 
						|
  it('should not crash a get definition', () => {
 | 
						|
    expect(() => ngService.getDefinitionAndBoundSpan(fileName, position)).not.toThrow();
 | 
						|
  });
 | 
						|
 | 
						|
  it('should not crash a hover',
 | 
						|
     () => { expect(() => ngService.getQuickInfoAtPosition(fileName, position)).not.toThrow(); });
 | 
						|
 | 
						|
  it('should not crash with an incomplete class', () => {
 | 
						|
    mockHost.addCode('\nexport class');
 | 
						|
    expect(() => ngHost.getAnalyzedModules()).not.toThrow();
 | 
						|
  });
 | 
						|
});
 |