angular-cn/packages/language-service/ivy
Keen Yee Liau 4985267211 test(language-service): [Ivy] return cursor position in overwritten template (#38552)
In many testing scenarios, there is a common pattern:

1. Overwrite template (inline or external)
2. Find cursor position
3. Call one of language service APIs
4. Inspect spans in result

In order to faciliate this pattern, this commit refactors
`MockHost.overwrite()` and `MockHost.overwriteInlineTemplate()` to
allow a faux cursor symbol `¦` to be injected into the template, and
the methods will automatically remove it before updating the script snapshot.
Both methods will return the cursor position and the new text without
the cursor symbol.

This makes testing very convenient. Here's a typical example:

```ts
const {position, text} = mockHost.overwrite('template.html', `{{ ti¦tle }}`);
const quickInfo = ngLS.getQuickInfoAtPosition('template.html', position);
const {start, length} = quickInfo!.textSpan;
expect(text.substring(start, start + length)).toBe('title');
```

PR Close #38552
2020-08-24 09:25:04 -07:00
..
test test(language-service): [Ivy] return cursor position in overwritten template (#38552) 2020-08-24 09:25:04 -07:00
BUILD.bazel feat(language-service): introduce hybrid visitor to locate AST node (#38540) 2020-08-24 09:24:18 -07:00
hybrid_visitor.ts feat(language-service): introduce hybrid visitor to locate AST node (#38540) 2020-08-24 09:24:18 -07:00
language_service.ts refactor(language-service): [Ivy] remove temporary compiler (#38310) 2020-08-17 11:30:33 -07:00
ts_plugin.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00