/* Import. - Start with different option packages. - Call all Routes - Check if _metrics has a good start */ import { Metrics } from './index' describe('metrics', () => { beforeEach(() => { jest.resetModules() }) describe('constructor / options', () => { it('should enable all 3 checks and default metrics by default', () => { const metrics = new Metrics({}) expect(metrics._disableDurationCounter).toBeFalsy() expect(metrics._disableErrorCounter).toBeFalsy() expect(metrics._disableRouteCounter).toBeFalsy() expect(metrics._disableDefaultMetrics).toBeFalsy() }) it('should disable Route Counter if option is given', () => { const metrics = new Metrics({ disableRouteCounter: true }) expect(metrics._disableDurationCounter).toBeFalsy() expect(metrics._disableErrorCounter).toBeFalsy() expect(metrics._disableRouteCounter).toBeTruthy() expect(metrics._disableDefaultMetrics).toBeFalsy() }) it('should disable Error Counter if option is given', () => { const metrics = new Metrics({ disableErrorCounter: true }) expect(metrics._disableDurationCounter).toBeFalsy() expect(metrics._disableErrorCounter).toBeTruthy() expect(metrics._disableRouteCounter).toBeFalsy() expect(metrics._disableDefaultMetrics).toBeFalsy() }) it('should disable Duration Counter if option is given', () => { const metrics = new Metrics({ disableDurationCounter: true }) expect(metrics._disableDurationCounter).toBeTruthy() expect(metrics._disableErrorCounter).toBeFalsy() expect(metrics._disableRouteCounter).toBeFalsy() expect(metrics._disableDefaultMetrics).toBeFalsy() }) it('should disable Default Metrics if option is given', () => { const metrics = new Metrics({ disableDefaultMetrics: true }) expect(metrics._disableDurationCounter).toBeFalsy() expect(metrics._disableErrorCounter).toBeFalsy() expect(metrics._disableRouteCounter).toBeFalsy() expect(metrics._disableDefaultMetrics).toBeTruthy() }) it('should ignore /_metrics and /favicon.ico by default', () => { const metrics = new Metrics() expect(metrics._ignore.length).toBe(2) expect(metrics._ignore).toContain('/_metrics') expect(metrics._ignore).toContain('/favicon.ico') }) it('should ignore given Routes, /_metrics and /favicon.ico by option', () => { const metrics = new Metrics({ ignore: ['/foo', '/bar'] }) expect(metrics._ignore.length).toBe(4) expect(metrics._ignore).toContain('/foo') expect(metrics._ignore).toContain('/bar') expect(metrics._ignore).toContain('/_metrics') expect(metrics._ignore).toContain('/favicon.ico') }) }) describe('collect()', () => { it.todo('should measure all 3 checks by default') it.todo('should disable Route Counter if option is given') it.todo('should disable Error Counter if option is given') it.todo('should disable Duration Counter if option is given') }) describe('endpoint()', () => { it.todo('should display all 3 basic metrics and default metrics by default') it.todo('should not scrape default metrics if disabled') }) })