650974e1b3
This commit removes all markers from the inline template in `AppComponent` and external template in `TemplateReference`. Test scenarios should be colocated with the test cases themselves. Besides, many existing cases are invalid. For example, if we want to test autocomplete for HTML element, the existing test case is like: ``` <~{cursor} h1> ``` This doesn't make much sense, becasue the language service already sees the `h1` tag in the template. The correct test case should be: ``` <~{cursor ``` IMO, this reflects the real-world use case better. This commit also uncovers a bug in the way HTML entities autocompletion is done. There's an off-by-one error in which a cursor that immediately trails the ampersand character fails to trigger HTML entities autocompletion. PR Close #37475
50 lines
1.6 KiB
TypeScript
50 lines
1.6 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google LLC 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 TEST_TEMPLATE = '/app/test.ng';
|
|
mockHost.override(TEST_TEMPLATE, '<h1> ~{cursor} </h1>');
|
|
const position = mockHost.getLocationMarkerFor(TEST_TEMPLATE, 'cursor').start;
|
|
|
|
beforeEach(() => {
|
|
mockHost.reset();
|
|
});
|
|
|
|
it('should not crash a get diagnostics', () => {
|
|
expect(() => ngService.getSemanticDiagnostics(TEST_TEMPLATE)).not.toThrow();
|
|
});
|
|
|
|
it('should not crash a completion', () => {
|
|
expect(() => ngService.getCompletionsAtPosition(TEST_TEMPLATE, position)).not.toThrow();
|
|
});
|
|
|
|
it('should not crash a get definition', () => {
|
|
expect(() => ngService.getDefinitionAndBoundSpan(TEST_TEMPLATE, position)).not.toThrow();
|
|
});
|
|
|
|
it('should not crash a hover', () => {
|
|
expect(() => ngService.getQuickInfoAtPosition(TEST_TEMPLATE, position)).not.toThrow();
|
|
});
|
|
|
|
it('should not crash with an incomplete class', () => {
|
|
mockHost.addCode('\nexport class');
|
|
expect(() => ngHost.getAnalyzedModules()).not.toThrow();
|
|
});
|
|
});
|