|
1 | 1 |
|
| 2 | +import { logger } from '@sentry/utils'; |
2 | 3 | import { insertToFlagBuffer } from '../../src/utils/featureFlags'; |
3 | 4 | import type { FeatureFlag } from '@sentry/types'; |
| 5 | +import { vi } from 'vitest'; |
4 | 6 |
|
5 | 7 | describe('flags', () => { |
6 | 8 | describe('insertToFlagBuffer()', () => { |
| 9 | + const loggerSpy = vi.spyOn(logger, 'error'); |
| 10 | + |
| 11 | + afterEach(() => { |
| 12 | + loggerSpy.mockClear(); |
| 13 | + }); |
| 14 | + |
7 | 15 | it('maintains ordering and evicts the oldest entry', () => { |
8 | 16 | const buffer: FeatureFlag[] = []; |
9 | 17 | const maxSize = 3; |
@@ -47,14 +55,29 @@ describe('flags', () => { |
47 | 55 | ]); |
48 | 56 | }); |
49 | 57 |
|
50 | | - it('errors when maxSize is less than current buffer size', () => { |
| 58 | + it('logs error and is a no-op when buffer is larger than maxSize', () => { |
51 | 59 | const buffer: FeatureFlag[] = [ |
52 | 60 | { flag: 'feat1', result: true }, |
53 | 61 | { flag: 'feat2', result: true }, |
54 | 62 | ]; |
55 | 63 |
|
56 | | - expect(() => insertToFlagBuffer(buffer, 'feat1', true, 1)).toThrowError(); |
57 | | - expect(() => insertToFlagBuffer(buffer, 'feat1', true, -2)).toThrowError(); |
| 64 | + insertToFlagBuffer(buffer, 'feat1', true, 1); |
| 65 | + expect(loggerSpy).toHaveBeenCalledWith( |
| 66 | + expect.stringContaining('[Feature Flags] insertToFlagBuffer called on a buffer larger than maxSize'), |
| 67 | + ); |
| 68 | + expect(buffer).toEqual([ |
| 69 | + { flag: 'feat1', result: true }, |
| 70 | + { flag: 'feat2', result: true }, |
| 71 | + ]); |
| 72 | + |
| 73 | + insertToFlagBuffer(buffer, 'feat1', true, -2); |
| 74 | + expect(loggerSpy).toHaveBeenCalledWith( |
| 75 | + expect.stringContaining('[Feature Flags] insertToFlagBuffer called on a buffer larger than maxSize'), |
| 76 | + ); |
| 77 | + expect(buffer).toEqual([ |
| 78 | + { flag: 'feat1', result: true }, |
| 79 | + { flag: 'feat2', result: true }, |
| 80 | + ]); |
58 | 81 | }); |
59 | 82 | }) |
60 | 83 | }) |
0 commit comments