javascript-typescript-langserver
Version:
Implementation of the Language Server Protocol for JavaScript and TypeScript
120 lines • 6.02 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const chai = require("chai");
const chaiAsPromised = require("chai-as-promised");
const opentracing_1 = require("opentracing");
const rxjs_1 = require("rxjs");
const sinon = require("sinon");
const tracing_1 = require("../tracing");
chai.use(chaiAsPromised);
const assert = chai.assert;
describe('tracing.ts', () => {
let sandbox;
beforeEach(() => {
sandbox = sinon.sandbox.create();
});
afterEach(() => {
sandbox.restore();
});
describe('traceSync()', () => {
it('should trace the error if the function throws', () => {
let setTagStub;
let logStub;
let finishStub;
assert.throws(() => {
tracing_1.traceSync('Foo', new opentracing_1.Span(), span => {
setTagStub = sandbox.stub(span, 'setTag');
logStub = sandbox.stub(span, 'log');
finishStub = sandbox.stub(span, 'finish');
throw new Error('Bar');
});
}, 'Bar');
sinon.assert.calledOnce(setTagStub);
sinon.assert.calledOnce(logStub);
sinon.assert.calledWith(setTagStub, 'error', true);
sinon.assert.calledWith(logStub, sinon.match({ event: 'error', message: 'Bar' }));
sinon.assert.calledOnce(finishStub);
});
});
describe('tracePromise()', () => {
it('should trace the error if the Promise is rejected', () => __awaiter(this, void 0, void 0, function* () {
let setTagStub;
let logStub;
let finishStub;
yield Promise.resolve(assert.isRejected(tracing_1.tracePromise('Foo', new opentracing_1.Span(), (span) => __awaiter(this, void 0, void 0, function* () {
setTagStub = sandbox.stub(span, 'setTag');
logStub = sandbox.stub(span, 'log');
finishStub = sandbox.stub(span, 'finish');
throw new Error('Bar');
})), 'Bar'));
yield new Promise(resolve => setTimeout(resolve, 0));
sinon.assert.calledOnce(setTagStub);
sinon.assert.calledOnce(logStub);
sinon.assert.calledWith(setTagStub, 'error', true);
sinon.assert.calledWith(logStub, sinon.match({ event: 'error', message: 'Bar' }));
sinon.assert.calledOnce(finishStub);
}));
it('should trace the error if the function throws an Error', () => __awaiter(this, void 0, void 0, function* () {
let setTagStub;
let logStub;
let finishStub;
yield Promise.resolve(assert.isRejected(tracing_1.tracePromise('Foo', new opentracing_1.Span(), span => {
setTagStub = sandbox.stub(span, 'setTag');
logStub = sandbox.stub(span, 'log');
finishStub = sandbox.stub(span, 'finish');
throw new Error('Bar');
}), 'Bar'));
yield new Promise(resolve => setTimeout(resolve, 0));
sinon.assert.calledOnce(setTagStub);
sinon.assert.calledOnce(logStub);
sinon.assert.calledWith(setTagStub, 'error', true);
sinon.assert.calledWith(logStub, sinon.match({ event: 'error', message: 'Bar' }));
sinon.assert.calledOnce(finishStub);
}));
});
describe('traceObservable()', () => {
it('should trace the error if the Observable errors', () => __awaiter(this, void 0, void 0, function* () {
let setTagStub;
let logStub;
let finishStub;
yield Promise.resolve(assert.isRejected(tracing_1.traceObservable('Foo', new opentracing_1.Span(), span => {
setTagStub = sandbox.stub(span, 'setTag');
logStub = sandbox.stub(span, 'log');
finishStub = sandbox.stub(span, 'finish');
return rxjs_1.Observable.throw(new Error('Bar'));
}).toPromise(), 'Bar'));
yield new Promise(resolve => setTimeout(resolve, 0));
sinon.assert.calledOnce(setTagStub);
sinon.assert.calledOnce(logStub);
sinon.assert.calledWith(setTagStub, 'error', true);
sinon.assert.calledWith(logStub, sinon.match({ event: 'error', message: 'Bar' }));
sinon.assert.calledOnce(finishStub);
}));
it('should trace the error if the function throws an Error', () => __awaiter(this, void 0, void 0, function* () {
let setTagStub;
let logStub;
let finishStub;
yield Promise.resolve(assert.isRejected(tracing_1.traceObservable('Foo', new opentracing_1.Span(), span => {
setTagStub = sandbox.stub(span, 'setTag');
logStub = sandbox.stub(span, 'log');
finishStub = sandbox.stub(span, 'finish');
throw new Error('Bar');
}).toPromise(), 'Bar'));
yield new Promise(resolve => setTimeout(resolve, 0));
sinon.assert.calledOnce(setTagStub);
sinon.assert.calledOnce(logStub);
sinon.assert.calledWith(setTagStub, 'error', true);
sinon.assert.calledWith(logStub, sinon.match({ event: 'error', message: 'Bar' }));
sinon.assert.calledOnce(finishStub);
}));
});
});
//# sourceMappingURL=tracing.test.js.map