"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Red Hat. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
const SchemaService = require("../src/languageservice/services/yamlSchemaService");
const url = require("url");
const sinon = require("sinon");
const chai = require("chai");
const sinonChai = require("sinon-chai");
const expect = chai.expect;
chai.use(sinonChai);
const workspaceContext = {
    resolveRelativePath: (relativePath, resource) => {
        return url.resolve(resource, relativePath);
    },
};
describe('YAML Schema', () => {
    const sandbox = sinon.createSandbox();
    let requestServiceStub;
    beforeEach(() => {
        requestServiceStub = sandbox.stub();
    });
    afterEach(() => {
        sandbox.restore();
    });
    it('Loading yaml scheme', async () => {
        requestServiceStub.resolves(`%YAML 1.2
---
properties:
  fooBar:
    items:
      type: string
    type: array
type: object
`);
        const service = new SchemaService.YAMLSchemaService(requestServiceStub, workspaceContext);
        const result = await service.loadSchema('fooScheme.yaml');
        expect(requestServiceStub.calledOnceWith('fooScheme.yaml'));
        expect(result.schema.properties['fooBar']).eql({
            items: { type: 'string' },
            type: 'array',
        });
    });
    it('Error while loading yaml', async () => {
        requestServiceStub.rejects();
        const service = new SchemaService.YAMLSchemaService(requestServiceStub, workspaceContext);
        const result = await service.loadSchema('fooScheme.yaml');
        expect(result.errors).length(1);
        expect(result.errors[0]).includes('Unable to load schema from');
    });
    it('Error while parsing yaml scheme', async () => {
        requestServiceStub.resolves(`%464*&^^&*%@$&^##$`);
        const service = new SchemaService.YAMLSchemaService(requestServiceStub, workspaceContext);
        const result = await service.loadSchema('fooScheme.yaml');
        expect(requestServiceStub.calledOnceWith('fooScheme.yaml'));
        expect(result.errors).length(1);
        expect(result.errors[0]).includes('Unable to parse content from');
    });
});
//# sourceMappingURL=yamlSchema.test.js.map