Skip to content

Commit 851da33

Browse files
committed
test
1 parent 8727c9b commit 851da33

File tree

2 files changed

+110
-8
lines changed

2 files changed

+110
-8
lines changed

lib/event_processor/event_processor_factory.browser.spec.ts

Lines changed: 107 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,33 @@ vi.mock('./default_dispatcher.browser', () => {
2020
});
2121

2222
vi.mock('./forwarding_event_processor', () => {
23-
const getForwardingEventProcessor = vi.fn().mockReturnValue({});
23+
const getForwardingEventProcessor = vi.fn().mockImplementation(() => {
24+
return {};
25+
});
2426
return { getForwardingEventProcessor };
2527
});
2628

2729
vi.mock('./event_processor_factory', () => {
28-
const getBatchEventProcessor = vi.fn().mockReturnValue({});
30+
const getBatchEventProcessor = vi.fn().mockImplementation(() => {
31+
return {};
32+
});
2933
return { getBatchEventProcessor };
3034
});
3135

32-
import { createForwardingEventProcessor, createBatchEventProcessor } from './event_processor_factory.browser';
36+
vi.mock('../utils/cache/local_storage_cache.browser', () => {
37+
return { LocalStorageCache: vi.fn() };
38+
});
39+
40+
vi.mock('../utils/cache/cache', () => {
41+
return { SyncPrefixCache: vi.fn() };
42+
});
43+
44+
45+
import defaultEventDispatcher from './default_dispatcher.browser';
46+
import { LocalStorageCache } from '../utils/cache/local_storage_cache.browser';
47+
import { SyncPrefixCache } from '../utils/cache/cache';
48+
import { createForwardingEventProcessor, createBatchEventProcessor, EVENT_STORE_PREFIX, FAILED_EVENT_RETRY_INTERVAL } from './event_processor_factory.browser';
49+
import sendBeaconEventDispatcher from '../plugins/event_dispatcher/send_beacon_dispatcher';
3350
import { getForwardingEventProcessor } from './forwarding_event_processor';
3451
import browserDefaultEventDispatcher from './default_dispatcher.browser';
3552
import { getBatchEventProcessor } from './event_processor_factory';
@@ -60,12 +77,15 @@ describe('createForwardingEventProcessor', () => {
6077
});
6178
});
6279

63-
6480
describe('createBatchEventProcessor', () => {
6581
const mockGetBatchEventProcessor = vi.mocked(getBatchEventProcessor);
82+
const MockLocalStorageCache = vi.mocked(LocalStorageCache);
83+
const MockSyncPrefixCache = vi.mocked(SyncPrefixCache);
6684

6785
beforeEach(() => {
6886
mockGetBatchEventProcessor.mockClear();
87+
MockLocalStorageCache.mockClear();
88+
MockSyncPrefixCache.mockClear();
6989
});
7090

7191
it('uses localStorageCache and SyncPrefixCache to create eventStore', () => {
@@ -80,6 +100,88 @@ describe('createBatchEventProcessor', () => {
80100
const processor = createBatchEventProcessor(options);
81101
expect(Object.is(processor, mockGetBatchEventProcessor.mock.results[0].value)).toBe(true);
82102
const eventStore = mockGetBatchEventProcessor.mock.calls[0][0].eventStore;
83-
expect
103+
expect(Object.is(eventStore, MockSyncPrefixCache.mock.results[0].value)).toBe(true);
104+
105+
const [cache, prefix, transformGet, transformSet] = MockSyncPrefixCache.mock.calls[0];
106+
expect(Object.is(cache, MockLocalStorageCache.mock.results[0].value)).toBe(true);
107+
expect(prefix).toBe(EVENT_STORE_PREFIX);
108+
109+
// transformGet and transformSet should be identity functions
110+
expect(transformGet('value')).toBe('value');
111+
expect(transformSet('value')).toBe('value');
112+
});
113+
114+
it('uses the provided eventDispatcher', () => {
115+
const eventDispatcher = {
116+
dispatchEvent: vi.fn(),
117+
};
118+
119+
const processor = createBatchEventProcessor({ eventDispatcher });
120+
expect(Object.is(processor, mockGetBatchEventProcessor.mock.results[0].value)).toBe(true);
121+
expect(mockGetBatchEventProcessor.mock.calls[0][0].eventDispatcher).toBe(eventDispatcher);
122+
});
123+
124+
it('uses the default broser event dispatcher if none is provided', () => {
125+
const processor = createBatchEventProcessor({ });
126+
expect(Object.is(processor, mockGetBatchEventProcessor.mock.results[0].value)).toBe(true);
127+
expect(mockGetBatchEventProcessor.mock.calls[0][0].eventDispatcher).toBe(defaultEventDispatcher);
128+
});
129+
130+
it('uses the provided closingEventDispatcher', () => {
131+
const closingEventDispatcher = {
132+
dispatchEvent: vi.fn(),
133+
};
134+
135+
const processor = createBatchEventProcessor({ closingEventDispatcher });
136+
expect(Object.is(processor, mockGetBatchEventProcessor.mock.results[0].value)).toBe(true);
137+
expect(mockGetBatchEventProcessor.mock.calls[0][0].closingEventDispatcher).toBe(closingEventDispatcher);
138+
});
139+
140+
it('does not use any closingEventDispatcher if eventDispatcher is provided but closingEventDispatcher is not', () => {
141+
const eventDispatcher = {
142+
dispatchEvent: vi.fn(),
143+
};
144+
145+
const processor = createBatchEventProcessor({ eventDispatcher });
146+
expect(Object.is(processor, mockGetBatchEventProcessor.mock.results[0].value)).toBe(true);
147+
expect(mockGetBatchEventProcessor.mock.calls[0][0].closingEventDispatcher).toBe(undefined);
148+
});
149+
150+
it('uses the default sendBeacon event dispatcher if neither eventDispatcher nor closingEventDispatcher is provided', () => {
151+
const processor = createBatchEventProcessor({ });
152+
expect(Object.is(processor, mockGetBatchEventProcessor.mock.results[0].value)).toBe(true);
153+
expect(mockGetBatchEventProcessor.mock.calls[0][0].closingEventDispatcher).toBe(sendBeaconEventDispatcher);
154+
});
155+
156+
it('uses the provided flushInterval', () => {
157+
const processor1 = createBatchEventProcessor({ flushInterval: 2000 });
158+
expect(Object.is(processor1, mockGetBatchEventProcessor.mock.results[0].value)).toBe(true);
159+
expect(mockGetBatchEventProcessor.mock.calls[0][0].flushInterval).toBe(2000);
160+
161+
const processor2 = createBatchEventProcessor({ });
162+
expect(Object.is(processor2, mockGetBatchEventProcessor.mock.results[1].value)).toBe(true);
163+
expect(mockGetBatchEventProcessor.mock.calls[1][0].flushInterval).toBe(undefined);
164+
});
165+
166+
it('uses the provided batchSize', () => {
167+
const processor1 = createBatchEventProcessor({ batchSize: 20 });
168+
expect(Object.is(processor1, mockGetBatchEventProcessor.mock.results[0].value)).toBe(true);
169+
expect(mockGetBatchEventProcessor.mock.calls[0][0].batchSize).toBe(20);
170+
171+
const processor2 = createBatchEventProcessor({ });
172+
expect(Object.is(processor2, mockGetBatchEventProcessor.mock.results[1].value)).toBe(true);
173+
expect(mockGetBatchEventProcessor.mock.calls[1][0].batchSize).toBe(undefined);
174+
});
175+
176+
it('uses maxRetries value of 5', () => {
177+
const processor = createBatchEventProcessor({ });
178+
expect(Object.is(processor, mockGetBatchEventProcessor.mock.results[0].value)).toBe(true);
179+
expect(mockGetBatchEventProcessor.mock.calls[0][0].retryOptions?.maxRetries).toBe(5);
180+
});
181+
182+
it('uses the default failedEventRetryInterval', () => {
183+
const processor = createBatchEventProcessor({ });
184+
expect(Object.is(processor, mockGetBatchEventProcessor.mock.results[0].value)).toBe(true);
185+
expect(mockGetBatchEventProcessor.mock.calls[0][0].failedEventRetryInterval).toBe(FAILED_EVENT_RETRY_INTERVAL);
84186
});
85187
});

lib/event_processor/event_processor_factory.browser.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ import { getBatchEventProcessor, BatchEventProcessorOptions } from './event_proc
2222
import defaultEventDispatcher from './default_dispatcher.browser';
2323
import sendBeaconEventDispatcher from '../plugins/event_dispatcher/send_beacon_dispatcher';
2424
import { LocalStorageCache } from '../utils/cache/local_storage_cache.browser';
25-
import { SyncPrefixCache, AsyncPrefixCache, Cache } from '../utils/cache/cache';
25+
import { SyncPrefixCache } from '../utils/cache/cache';
2626

2727
export const FAILED_EVENT_RETRY_INTERVAL = 20 * 1000;
28-
export const EVENT_STORE_PREFIX = 'fs_optly_pending_events';
28+
export const EVENT_STORE_PREFIX = 'optly_event:';
2929

3030
export const createForwardingEventProcessor = (
3131
eventDispatcher: EventDispatcher = defaultEventDispatcher,
@@ -48,7 +48,7 @@ export const createBatchEventProcessor = (
4848
return getBatchEventProcessor({
4949
eventDispatcher: options.eventDispatcher || defaultEventDispatcher,
5050
closingEventDispatcher: options.closingEventDispatcher ||
51-
(options.eventDispatcher ? options.eventDispatcher : sendBeaconEventDispatcher),
51+
(options.eventDispatcher ? undefined : sendBeaconEventDispatcher),
5252
flushInterval: options.flushInterval,
5353
batchSize: options.batchSize,
5454
retryOptions: {

0 commit comments

Comments
 (0)