99 lines
5.2 KiB
JavaScript
99 lines
5.2 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 sinon = require("sinon");
|
|
const chai = require("chai");
|
|
const sinonChai = require("sinon-chai");
|
|
const schemaSelectionHandlers_1 = require("../src/languageserver/handlers/schemaSelectionHandlers");
|
|
const yamlSchemaService_1 = require("../src/languageservice/services/yamlSchemaService");
|
|
const yamlSettings_1 = require("../src/yamlSettings");
|
|
const requestTypes_1 = require("../src/requestTypes");
|
|
const testHelper_1 = require("./utils/testHelper");
|
|
const expect = chai.expect;
|
|
chai.use(sinonChai);
|
|
describe('Schema Selection Handlers', () => {
|
|
const sandbox = sinon.createSandbox();
|
|
const connection = {};
|
|
let service;
|
|
let requestServiceMock;
|
|
beforeEach(() => {
|
|
requestServiceMock = sandbox.fake.resolves(undefined);
|
|
service = new yamlSchemaService_1.YAMLSchemaService(requestServiceMock);
|
|
connection.client = {};
|
|
const onRequest = sandbox.fake();
|
|
connection.onRequest = onRequest;
|
|
});
|
|
afterEach(() => {
|
|
sandbox.restore();
|
|
});
|
|
it('add handler for "getSchema" and "getAllSchemas" requests', () => {
|
|
new schemaSelectionHandlers_1.JSONSchemaSelection(service, new yamlSettings_1.SettingsState(), connection);
|
|
expect(connection.onRequest).calledWith(requestTypes_1.SchemaSelectionRequests.getSchema);
|
|
expect(connection.onRequest).calledWith(requestTypes_1.SchemaSelectionRequests.getAllSchemas);
|
|
});
|
|
it('getAllSchemas should return all schemas', async () => {
|
|
service.registerExternalSchema('https://some.com/some.json', ['foo.yaml'], undefined, 'Schema name', 'Schema description');
|
|
const settings = new yamlSettings_1.SettingsState();
|
|
const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)('');
|
|
settings.documents = new yamlSettings_1.TextDocumentTestManager();
|
|
settings.documents.set(testTextDocument);
|
|
const selection = new schemaSelectionHandlers_1.JSONSchemaSelection(service, settings, connection);
|
|
const result = await selection.getAllSchemas(testTextDocument.uri);
|
|
expect(result).length(1);
|
|
expect(result[0]).to.be.eqls({
|
|
uri: 'https://some.com/some.json',
|
|
fromStore: true,
|
|
usedForCurrentFile: false,
|
|
name: 'Schema name',
|
|
description: 'Schema description',
|
|
versions: undefined,
|
|
});
|
|
});
|
|
it('getAllSchemas should return all schemas and mark used for current file', async () => {
|
|
service.registerExternalSchema('https://some.com/some.json', [testHelper_1.SCHEMA_ID], undefined, 'Schema name', 'Schema description');
|
|
const settings = new yamlSettings_1.SettingsState();
|
|
const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)('');
|
|
settings.documents = new yamlSettings_1.TextDocumentTestManager();
|
|
settings.documents.set(testTextDocument);
|
|
const selection = new schemaSelectionHandlers_1.JSONSchemaSelection(service, settings, connection);
|
|
const result = await selection.getAllSchemas(testTextDocument.uri);
|
|
expect(result).length(1);
|
|
expect(result[0]).to.be.eqls({
|
|
uri: 'https://some.com/some.json',
|
|
name: 'Schema name',
|
|
description: 'Schema description',
|
|
fromStore: false,
|
|
usedForCurrentFile: true,
|
|
versions: undefined,
|
|
});
|
|
});
|
|
it('getSchemas should return all schemas', async () => {
|
|
service.registerExternalSchema('https://some.com/some.json', [testHelper_1.SCHEMA_ID], undefined, 'Schema name', 'Schema description');
|
|
const settings = new yamlSettings_1.SettingsState();
|
|
const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)('');
|
|
settings.documents = new yamlSettings_1.TextDocumentTestManager();
|
|
settings.documents.set(testTextDocument);
|
|
const selection = new schemaSelectionHandlers_1.JSONSchemaSelection(service, settings, connection);
|
|
const result = await selection.getSchemas(testTextDocument.uri);
|
|
expect(result).length(1);
|
|
expect(result[0]).to.be.eqls({
|
|
uri: 'https://some.com/some.json',
|
|
name: 'Schema name',
|
|
description: 'Schema description',
|
|
versions: undefined,
|
|
});
|
|
});
|
|
it('getSchemas should handle empty schemas', async () => {
|
|
const settings = new yamlSettings_1.SettingsState();
|
|
const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)('');
|
|
settings.documents = new yamlSettings_1.TextDocumentTestManager();
|
|
settings.documents.set(testTextDocument);
|
|
const selection = new schemaSelectionHandlers_1.JSONSchemaSelection(service, settings, connection);
|
|
const result = await selection.getSchemas(testTextDocument.uri);
|
|
expect(result).length(0);
|
|
});
|
|
});
|
|
//# sourceMappingURL=schemaSelectionHandlers.test.js.map
|