Skip to content

Commit 33b4344

Browse files
[FSSDK-8184] override attribute bug fix of track method (#287)
1 parent f3185b7 commit 33b4344

File tree

2 files changed

+37
-20
lines changed

2 files changed

+37
-20
lines changed

src/client.spec.ts

+37-19
Original file line numberDiff line numberDiff line change
@@ -1390,36 +1390,54 @@ describe('ReactSDKClient', () => {
13901390
expect(mockFn).toHaveBeenCalledTimes(0);
13911391
});
13921392

1393-
it('track works as expected', () => {
1394-
const mockFn = mockInnerClient.track as jest.Mock;
1393+
describe('track with different parameters', () => {
1394+
it('track with only event key, calls inner client with valid arguments', () => {
1395+
const mockFn = mockInnerClient.track as jest.Mock;
1396+
instance.track('evt1');
13951397

1396-
instance.track('evt1');
1398+
expect(mockFn).toHaveBeenCalledTimes(1);
1399+
expect(mockFn).toHaveBeenCalledWith('evt1', 'user1', { foo: 'bar' }, undefined);
1400+
});
13971401

1398-
expect(mockFn).toHaveBeenCalledTimes(1);
1399-
expect(mockFn).toHaveBeenCalledWith('evt1', 'user1', { foo: 'bar' }, undefined);
1402+
it('track with event key and overrided user id and attributes, calls inner client with valid arguments', () => {
1403+
const mockFn = mockInnerClient.track as jest.Mock;
1404+
instance.track('evt1', 'user2', { bar: 'baz' });
14001405

1401-
mockFn.mockReset();
1406+
expect(mockFn).toHaveBeenCalledTimes(1);
1407+
expect(mockFn).toHaveBeenCalledWith('evt1', 'user2', { bar: 'baz' }, undefined);
1408+
});
14021409

1403-
instance.track('evt1', 'user2', { bar: 'baz' });
1410+
it('track with event key and event tags, calls inner client with valid arguments', () => {
1411+
const mockFn = mockInnerClient.track as jest.Mock;
1412+
instance.track('evt1', { tagKey: 'tagVal' });
14041413

1405-
expect(mockFn).toHaveBeenCalledTimes(1);
1406-
expect(mockFn).toHaveBeenCalledWith('evt1', 'user2', { bar: 'baz' }, undefined);
1414+
expect(mockFn).toHaveBeenCalledTimes(1);
1415+
expect(mockFn).toHaveBeenCalledWith('evt1', 'user1', { foo: 'bar' }, { tagKey: 'tagVal' });
1416+
});
14071417

1408-
mockFn.mockReset();
1418+
it('track with event key, overrided user id and attributes and event tags, calls inner client with valid arguments', () => {
1419+
const mockFn = mockInnerClient.track as jest.Mock;
1420+
instance.track('evt1', 'user3', { bla: 'bla' }, { tagKey: 'tagVal' });
14091421

1410-
// Use pre-set user with event tags
1411-
instance.track('evt1', { tagKey: 'tagVal' });
1422+
expect(mockFn).toHaveBeenCalledTimes(1);
1423+
expect(mockFn).toHaveBeenCalledWith('evt1', 'user3', { bla: 'bla' }, { tagKey: 'tagVal' });
1424+
});
14121425

1413-
expect(mockFn).toHaveBeenCalledTimes(1);
1414-
expect(mockFn).toHaveBeenCalledWith('evt1', 'user1', { foo: 'bar' }, { tagKey: 'tagVal' });
1426+
it('track with event key, tags, and overrided attributes, calls inner client with valid arguments', () => {
1427+
const mockFn = mockInnerClient.track as jest.Mock;
1428+
instance.track('evt1', { tagKey: 'tagVal' }, { bla: 'bla' });
14151429

1416-
mockFn.mockReset();
1430+
expect(mockFn).toHaveBeenCalledTimes(1);
1431+
expect(mockFn).toHaveBeenCalledWith('evt1', 'user1', { bla: 'bla' }, { tagKey: 'tagVal' });
1432+
});
14171433

1418-
// Use overrides with event tags
1419-
instance.track('evt1', 'user3', { bla: 'bla' }, { tagKey: 'tagVal' });
1434+
it('track with event key, userId undefined, attributes undefined, and event tags, calls inner client with valid arguments', () => {
1435+
const mockFn = mockInnerClient.track as jest.Mock;
1436+
instance.track('evt1', undefined, undefined, { tagKey: 'tagVal' });
14201437

1421-
expect(mockFn).toHaveBeenCalledTimes(1);
1422-
expect(mockFn).toHaveBeenCalledWith('evt1', 'user3', { bla: 'bla' }, { tagKey: 'tagVal' });
1438+
expect(mockFn).toHaveBeenCalledTimes(1);
1439+
expect(mockFn).toHaveBeenCalledWith('evt1', 'user1', { foo: 'bar' }, { tagKey: 'tagVal' });
1440+
});
14231441
});
14241442
});
14251443

src/client.ts

-1
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,6 @@ class OptimizelyReactSDKClient implements ReactSDKClient {
635635
if (typeof overrideUserId !== 'undefined' && typeof overrideUserId !== 'string') {
636636
eventTags = overrideUserId;
637637
overrideUserId = undefined;
638-
overrideAttributes = undefined;
639638
}
640639

641640
const user = this.getUserWithOverrides(overrideUserId, overrideAttributes);

0 commit comments

Comments
 (0)