|
10 | 10 |
|
11 | 11 | import {expect} from 'chai'; |
12 | 12 | import {Position, Range} from 'graphql-language-service-utils'; |
| 13 | +import {SymbolKind} from 'vscode-languageserver-types'; |
13 | 14 | import {beforeEach, describe, it} from 'mocha'; |
14 | 15 |
|
15 | 16 | import {MessageProcessor} from '../MessageProcessor'; |
@@ -51,6 +52,17 @@ describe('MessageProcessor', () => { |
51 | 52 | getDiagnostics: (query, uri) => { |
52 | 53 | return []; |
53 | 54 | }, |
| 55 | + getOutline: (query) => { |
| 56 | + return { |
| 57 | + outlineTrees: [{ |
| 58 | + representativeName: "item", |
| 59 | + kind: "Field", |
| 60 | + startPosition: { line: 1, character: 2 }, |
| 61 | + endPosition: { line: 1, character: 4 }, |
| 62 | + children: [], |
| 63 | + }], |
| 64 | + }; |
| 65 | + }, |
54 | 66 | }; |
55 | 67 | }); |
56 | 68 | messageProcessor._isInitialized = true; |
@@ -164,4 +176,39 @@ describe('MessageProcessor', () => { |
164 | 176 | const result = await messageProcessor.handleDefinitionRequest(test); |
165 | 177 | expect(result[0].uri).to.equal(`file://${queryDir}/testFragment.graphql`); |
166 | 178 | }); |
| 179 | + |
| 180 | + it('runs document symbol requests', async () => { |
| 181 | + const validQuery = ` |
| 182 | + { |
| 183 | + hero(episode: EMPIRE){ |
| 184 | + ...testFragment |
| 185 | + } |
| 186 | + } |
| 187 | + `; |
| 188 | + |
| 189 | + const newDocument = { |
| 190 | + textDocument: { |
| 191 | + text: validQuery, |
| 192 | + uri: `${queryDir}/test3.graphql`, |
| 193 | + version: 0, |
| 194 | + }, |
| 195 | + }; |
| 196 | + |
| 197 | + await messageProcessor.handleDidOpenOrSaveNotification(newDocument); |
| 198 | + |
| 199 | + const test = { |
| 200 | + textDocument: newDocument.textDocument, |
| 201 | + }; |
| 202 | + |
| 203 | + const result = await messageProcessor.handleDocumentSymbolRequest(test); |
| 204 | + |
| 205 | + expect(result).to.not.be.undefined; |
| 206 | + expect(result.length).to.equal(1); |
| 207 | + expect(result[0].name).to.equal("item"); |
| 208 | + expect(result[0].kind).to.equal(SymbolKind.Field); |
| 209 | + expect(result[0].location.range).to.deep.equal({ |
| 210 | + start: { line: 1, character: 2 }, |
| 211 | + end: { line: 1, character: 4 }, |
| 212 | + }); |
| 213 | + }); |
167 | 214 | }); |
0 commit comments