90 lines
3.6 KiB
JavaScript
90 lines
3.6 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Red Hat, Inc. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
const chai_1 = require("chai");
|
|
const src_1 = require("../src");
|
|
const schemaRequestHandler_1 = require("../src/languageservice/services/schemaRequestHandler");
|
|
const testHelper_1 = require("./utils/testHelper");
|
|
/**
|
|
* Builds a simple schema request service
|
|
* @param contentMap Mapping of a schema uri to the schema content
|
|
*/
|
|
function schemaRequestServiceBuilder(contentMap) {
|
|
return async (uri) => {
|
|
return contentMap[uri];
|
|
};
|
|
}
|
|
describe('getLanguageService()', () => {
|
|
it('successfully creates an instance without optional arguments', () => {
|
|
(0, src_1.getLanguageService)({
|
|
schemaRequestService: {},
|
|
workspaceContext: {},
|
|
});
|
|
});
|
|
describe('minimal language service hover happy path', () => {
|
|
const schemaUri = 'my.schema.uri';
|
|
const schemaContentMap = {};
|
|
let schemaRequestService;
|
|
let textDocument;
|
|
let hoverPosition; // Position the 'mouse' is hovering on the content
|
|
let minimalYamlService;
|
|
before(async () => {
|
|
// Setup object that resolves schema content
|
|
schemaContentMap[schemaUri] = `
|
|
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"type": "object",
|
|
"properties": {
|
|
"firstName": {
|
|
"type": "string",
|
|
"description": "The person's first name."
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
schemaRequestService = schemaRequestServiceBuilder(schemaContentMap);
|
|
// Setup the document and where the hover is on it
|
|
const contentWithHoverPosition = 'fi|r|stName: "Nikolas"';
|
|
const { content, position: offset } = (0, testHelper_1.caretPosition)(contentWithHoverPosition);
|
|
textDocument = (0, testHelper_1.setupSchemaIDTextDocument)(content);
|
|
hoverPosition = textDocument.positionAt(offset);
|
|
// Setup minimal language service + indicate to provide hover functionality
|
|
minimalYamlService = (0, src_1.getLanguageService)({
|
|
schemaRequestService: schemaRequestService,
|
|
workspaceContext: schemaRequestHandler_1.workspaceContext,
|
|
});
|
|
minimalYamlService.configure({
|
|
hover: true,
|
|
schemas: [
|
|
{
|
|
fileMatch: [textDocument.uri],
|
|
uri: schemaUri,
|
|
},
|
|
],
|
|
});
|
|
});
|
|
it('successfully creates an instance without optional arguments', async () => {
|
|
const result = await minimalYamlService.doHover(textDocument, hoverPosition);
|
|
chai_1.assert.deepEqual(result, {
|
|
contents: {
|
|
kind: 'markdown',
|
|
value: "The person's first name\\.\n\nSource: [my.schema.uri](my.schema.uri)",
|
|
},
|
|
range: {
|
|
start: {
|
|
line: 0,
|
|
character: 0,
|
|
},
|
|
end: {
|
|
line: 0,
|
|
character: 9,
|
|
},
|
|
},
|
|
});
|
|
});
|
|
});
|
|
});
|
|
//# sourceMappingURL=yamlLanguageService.test.js.map
|