UNPKG

honeybadger

Version:

A JavaScript library for integrating apps with the Honeybadger Rails Error Notifier.

130 lines (99 loc) 3.86 kB
goog.provide 'honeybadger.spec' goog.require 'honeybadger' describe 'Honeybadger', -> beforeEach () -> Honeybadger.configuration.reset() it 'has a configuration object', -> expect(Honeybadger.configuration).toBeDefined() describe '.configure', -> it 'configures Honeybadger', -> expect(Honeybadger.configure).toBeDefined() Honeybadger.configure api_key: 'asdf' expect(Honeybadger.configuration.api_key).toEqual('asdf') it 'enables notifications on first call', -> expect(Honeybadger.configuration.disabled).toEqual(true) Honeybadger.configure api_key: 'asdf' expect(Honeybadger.configuration.disabled).toEqual(false) it 'leaves notifications disabled on subsequent call', -> expect(Honeybadger.configuration.disabled).toEqual(true) Honeybadger.configure api_key: 'asdf' disabled: true Honeybadger.configure api_key: 'zxcv' expect(Honeybadger.configuration.disabled).toEqual(true) it 'is chainable', -> expect(Honeybadger.configure({})).toBe(Honeybadger) it 'has a context object', -> expect(Honeybadger.context).toBeDefined() describe '.setContext', -> it 'merges existing context', -> Honeybadger.setContext({ user_id: '1' }) Honeybadger.setContext({ foo: 'bar' }) expect(Honeybadger.context.user_id).toBeDefined() expect(Honeybadger.context['user_id']).toEqual('1') expect(Honeybadger.context.foo).toBeDefined() expect(Honeybadger.context['foo']).toEqual('bar') it 'is chainable', -> expect(Honeybadger.setContext({ user_id: 1 })).toBe(Honeybadger) describe '.resetContext', -> it 'empties the context with no arguments', -> Honeybadger.setContext({ user_id: '1' }) Honeybadger.resetContext() expect(Honeybadger.context).toEqual({}) it 'replaces the context with arguments', -> Honeybadger.setContext({ user_id: '1' }) Honeybadger.resetContext({ foo: 'bar' }) expect(Honeybadger.context).toEqual({ foo: 'bar' }) it 'is chainable', -> expect(Honeybadger.resetContext()).toBe(Honeybadger) it 'responds to notify', -> expect(Honeybadger.notify).toBeDefined() describe '.notify', -> beforeEach () -> spyOn(Honeybadger, '_sendRequest') notice = null it 'delivers the notice when enabled', -> Honeybadger.configure api_key: 'asdf' try 'foo'.bar() catch e Honeybadger.notify(e) notice = new Notice({ error: e }) expect(Honeybadger._sendRequest).toHaveBeenCalledWith(notice.toJSON()) it 'does not deliver notice when not configured', -> try 'foo'.bar() catch e Honeybadger.notify(e) notice = new Notice({ error: e }) expect(Honeybadger._sendRequest).not.toHaveBeenCalled() it 'does not deliver notice when disabled', -> Honeybadger.configure api_key: 'asdf', disabled: true try 'foo'.bar() catch e Honeybadger.notify(e) notice = new Notice({ error: e }) expect(Honeybadger._sendRequest).not.toHaveBeenCalled() describe '._handleTraceKitSubscription', -> beforeEach () -> spyOn Honeybadger, 'notify' describe 'default behavior', -> it 'ignores unhandled errors', -> Honeybadger._handleTraceKitSubscription({}) expect(Honeybadger.notify).not.toHaveBeenCalled() describe 'when onerror is enabled', -> beforeEach () -> Honeybadger.configure api_key: 'asdf', onerror: true it 'notifies Honeybadger of unhandled exceptions', -> stackInfo = 'foo' Honeybadger._handleTraceKitSubscription(stackInfo) expect(Honeybadger.notify).toHaveBeenCalledWith(null, { stackInfo: stackInfo })