Skip to content

Commit c50e7b8

Browse files
Junaed/fssdk 10980 optimizely onready always returns false (#302)
1 parent 0dffba5 commit c50e7b8

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

src/client.spec.ts

+19
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,25 @@ describe('ReactSDKClient', () => {
315315
expect(instance.getUserContext()).toBe(null);
316316
});
317317

318+
it('if user id is not present, and ODP is explicitly off, user promise will be pending', async () => {
319+
jest.spyOn(mockInnerClient, 'onReady').mockResolvedValue({ success: true });
320+
321+
instance = createInstance({
322+
...config,
323+
odpOptions: {
324+
disabled: true,
325+
},
326+
});
327+
328+
await instance.setUser(DefaultUser);
329+
expect(instance.isReady()).toBe(false);
330+
331+
await instance.setUser({ id: 'user123' });
332+
await instance.onReady();
333+
334+
expect(instance.isReady()).toBe(true);
335+
});
336+
318337
it('can be called with no/default user set', async () => {
319338
jest.spyOn(mockOptimizelyUserContext, 'getUserId').mockReturnValue(validVuid);
320339

src/client.ts

+4
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,10 @@ class OptimizelyReactSDKClient implements ReactSDKClient {
382382
}
383383

384384
public async setUser(userInfo: UserInfo): Promise<void> {
385+
// If user id is not present and ODP is explicitly off, user promise will be pending until setUser is called again with proper user id
386+
if (userInfo.id === null && this.odpExplicitlyOff) {
387+
return;
388+
}
385389
this.user = {
386390
id: userInfo.id || DefaultUser.id,
387391
attributes: userInfo.attributes || DefaultUser.attributes,

0 commit comments

Comments
 (0)