Skip to content

Commit eb40675

Browse files
authored
[FSSDK-11397] replace odp pixel api usage with event api for browser (#1026)
1 parent 326b50a commit eb40675

File tree

2 files changed

+31
-15
lines changed

2 files changed

+31
-15
lines changed

lib/odp/odp_manager_factory.browser.spec.ts

+25-11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* Copyright 2024, Optimizely
2+
* Copyright 2024-2025, Optimizely
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -28,9 +28,9 @@ vi.mock('./odp_manager_factory', () => {
2828

2929
import { describe, it, expect, beforeEach, vi } from 'vitest';
3030
import { getOpaqueOdpManager, OdpManagerOptions } from './odp_manager_factory';
31-
import { BROWSER_DEFAULT_API_TIMEOUT, createOdpManager } from './odp_manager_factory.browser';
31+
import { BROWSER_DEFAULT_API_TIMEOUT, BROWSER_DEFAULT_BATCH_SIZE, BROWSER_DEFAULT_FLUSH_INTERVAL, createOdpManager } from './odp_manager_factory.browser';
3232
import { BrowserRequestHandler } from '../utils/http_request_handler/request_handler.browser';
33-
import { pixelApiRequestGenerator } from './event_manager/odp_event_api_manager';
33+
import { eventApiRequestGenerator, pixelApiRequestGenerator } from './event_manager/odp_event_api_manager';
3434

3535
describe('createOdpManager', () => {
3636
const MockBrowserRequestHandler = vi.mocked(BrowserRequestHandler);
@@ -77,25 +77,39 @@ describe('createOdpManager', () => {
7777
expect(requestHandlerOptions?.timeout).toBe(BROWSER_DEFAULT_API_TIMEOUT);
7878
});
7979

80-
it('should use batchSize 1 if batchSize is not provided', () => {
81-
const odpManager = createOdpManager({});
80+
it('should use the provided eventBatchSize', () => {
81+
const odpManager = createOdpManager({ eventBatchSize: 99 });
8282
expect(odpManager).toBe(mockGetOpaqueOdpManager.mock.results[0].value);
8383
const { eventBatchSize } = mockGetOpaqueOdpManager.mock.calls[0][0];
84-
expect(eventBatchSize).toBe(1);
84+
expect(eventBatchSize).toBe(99);
8585
});
8686

87-
it('should use batchSize 1 event if some other batchSize value is provided', () => {
88-
const odpManager = createOdpManager({ eventBatchSize: 99 });
87+
it('should use the browser default eventBatchSize if none provided', () => {
88+
const odpManager = createOdpManager({});
8989
expect(odpManager).toBe(mockGetOpaqueOdpManager.mock.results[0].value);
9090
const { eventBatchSize } = mockGetOpaqueOdpManager.mock.calls[0][0];
91-
expect(eventBatchSize).toBe(1);
91+
expect(eventBatchSize).toBe(BROWSER_DEFAULT_BATCH_SIZE);
92+
});
93+
94+
it('should use the provided eventFlushInterval', () => {
95+
const odpManager = createOdpManager({ eventFlushInterval: 9999 });
96+
expect(odpManager).toBe(mockGetOpaqueOdpManager.mock.results[0].value);
97+
const { eventFlushInterval } = mockGetOpaqueOdpManager.mock.calls[0][0];
98+
expect(eventFlushInterval).toBe(9999);
99+
});
100+
101+
it('should use the browser default eventFlushInterval if none provided', () => {
102+
const odpManager = createOdpManager({});
103+
expect(odpManager).toBe(mockGetOpaqueOdpManager.mock.results[0].value);
104+
const { eventFlushInterval } = mockGetOpaqueOdpManager.mock.calls[0][0];
105+
expect(eventFlushInterval).toBe(BROWSER_DEFAULT_FLUSH_INTERVAL);
92106
});
93107

94-
it('uses the pixel api request generator', () => {
108+
it('uses the event api request generator', () => {
95109
const odpManager = createOdpManager({ });
96110
expect(odpManager).toBe(mockGetOpaqueOdpManager.mock.results[0].value);
97111
const { eventRequestGenerator } = mockGetOpaqueOdpManager.mock.calls[0][0];
98-
expect(eventRequestGenerator).toBe(pixelApiRequestGenerator);
112+
expect(eventRequestGenerator).toBe(eventApiRequestGenerator);
99113
});
100114

101115
it('uses the passed options for relevant fields', () => {

lib/odp/odp_manager_factory.browser.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@
1515
*/
1616

1717
import { BrowserRequestHandler } from '../utils/http_request_handler/request_handler.browser';
18-
import { pixelApiRequestGenerator } from './event_manager/odp_event_api_manager';
19-
import { OdpManager } from './odp_manager';
18+
import { eventApiRequestGenerator } from './event_manager/odp_event_api_manager';
2019
import { getOpaqueOdpManager, OdpManagerOptions, OpaqueOdpManager } from './odp_manager_factory';
2120

2221
export const BROWSER_DEFAULT_API_TIMEOUT = 10_000;
22+
export const BROWSER_DEFAULT_BATCH_SIZE = 10;
23+
export const BROWSER_DEFAULT_FLUSH_INTERVAL = 1000;
2324

2425
export const createOdpManager = (options: OdpManagerOptions = {}): OpaqueOdpManager => {
2526
const segmentRequestHandler = new BrowserRequestHandler({
@@ -32,9 +33,10 @@ export const createOdpManager = (options: OdpManagerOptions = {}): OpaqueOdpMana
3233

3334
return getOpaqueOdpManager({
3435
...options,
35-
eventBatchSize: 1,
36+
eventBatchSize: options.eventBatchSize || BROWSER_DEFAULT_BATCH_SIZE,
37+
eventFlushInterval: options.eventFlushInterval || BROWSER_DEFAULT_FLUSH_INTERVAL,
3638
segmentRequestHandler,
3739
eventRequestHandler,
38-
eventRequestGenerator: pixelApiRequestGenerator,
40+
eventRequestGenerator: eventApiRequestGenerator,
3941
});
4042
};

0 commit comments

Comments
 (0)