describe('Raygun Exception Handler when on development URL', () => { var subject: RaygunExceptionHandler; var http: TypeMoq.Mock<Http> = TypeMoq.Mock.ofType(Http); var sampleResponse = TypeMoq.Mock.ofType(Observable); var sampleException: TypeMoq.Mock<WrappedException> = TypeMoq.Mock.ofType(WrappedException); var originalException = new Error('fintech'); http .setup(x => x.post(TypeMoq.It.isAny(), TypeMoq.It.isAny())) .returns(() => sampleResponse.object); sampleException .setup(x => x.originalException) .returns(() => originalException); beforeEach(() => { RaygunExceptionHandler.apiKey = 'fintechfintech=='; RaygunExceptionHandler.version = '1.0.0'; RaygunExceptionHandler.setDevelopmentHostnames([global['window'].location.origin]); subject = new RaygunExceptionHandler(http.object); }); it('should exist', () => { assert.ok(RaygunExceptionHandler); }); it('should not attempt to call the Raygun API but does rethrow the exception', () => { assert.throws(() => subject.call(sampleException.object), Error, originalException.message); http.verify(x => x.post(TypeMoq.It.isAny(), TypeMoq.It.isAny()), TypeMoq.Times.never()); }); });
describe('Raygun Exception Handler', () => { var subject: RaygunExceptionHandler; var http: TypeMoq.Mock<Http> = TypeMoq.Mock.ofType(Http); var sampleResponse = TypeMoq.Mock.ofType(Observable); var sampleException: TypeMoq.Mock<WrappedException> = TypeMoq.Mock.ofType(WrappedException); var originalException = new Error('fintech'); http .setup(x => x.post(TypeMoq.It.isAny(), TypeMoq.It.isAny())) .returns(() => sampleResponse.object); sampleException .setup(x => x.originalException) .returns(() => originalException); beforeEach(() => { RaygunExceptionHandler.apiKey = 'fintechfintech=='; RaygunExceptionHandler.version = '1.0.0'; subject = new RaygunExceptionHandler(http.object); }); it('should exist', () => { assert.ok(RaygunExceptionHandler); }); it('should attempt to call the Raygun API and rethrow the exception', () => { assert.throws(() => subject.call(sampleException.object), Error, originalException.message); http.verify(x => x.post('https://api.raygun.io/entries?apikey=fintechfintech==', TypeMoq.It.isAny()), TypeMoq.Times.once()); }); });
describe('Error Report', () => { var subject: ErrorReport; var sampleException = TM.Mock.ofType(WrappedException); var clock: Sinon.SinonFakeTimers; sampleException.setup(x => x.originalException) .returns(() => new Error('fintech')); beforeEach(() => { clock = sinon.useFakeTimers(); subject = new ErrorReport(sampleException.object); }); afterEach(() => { clock.restore(); }); it('should set the time of occurence', () => { assert.equal(subject.occurredOn, new Date().toISOString()); }); it('should create an error details object', () => { assert.ok(subject.details); }); });
describe('Raygun Error', () => { var subject: RaygunError; var sampleException = TM.Mock.ofType(WrappedException); sampleException.setup(x => x.originalException) .returns(() => new Error('fintech')); beforeEach(() => { subject = new RaygunError(sampleException.object); }); it('should set the error type', () => { assert.equal(subject.className, 'Error'); }); it('should contain the error message', () => { assert.equal(subject.message, 'fintech'); }); it('should create a stack trace', () => { assert.isArray(subject.stackTrace); assert.ok(subject.stackTrace[0].fileName); assert.ok(subject.stackTrace[0].lineNumber); assert.ok(subject.stackTrace[0].columnNumber); assert.ok(subject.stackTrace[0].methodName); assert.ok(subject.stackTrace[0].className); }); });
describe('Error Details', () => { var subject: ErrorDetails; var sampleError = TM.Mock.ofType(WrappedException); sampleError.setup(x => x.originalException) .returns(() => new Error('fintech')); beforeEach(() => { subject = new ErrorDetails(sampleError.object); }); it('should generate a grouping key by base64 encoding the error message', () => { assert.equal(subject.generateGroupingKey(sampleError.object.originalException.message), 'ZmludGVjaA=='); }); it('should generate child objects', () => { assert.ok(subject.groupingKey); assert.ok(subject.error); assert.ok(subject.environment); assert.ok(subject.request); assert.ok(subject.client); }); });