Skip to content

Commit fcedfe9

Browse files
[FSSDK-10880] override initial user bug adjustment (#292)
1 parent 33b4344 commit fcedfe9

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

.github/workflows/integration_test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
- name: Checkout branch
1515
uses: actions/checkout@v3
1616
with:
17-
token: ${{ secrets.CI_USER_TOKEN }}
17+
token: ${{ secrets.CI_USER_TOKEN || secrets.GITHUB_TOKEN }}
1818
repository: 'optimizely/travisci-tools'
1919
path: 'home/runner/travisci-tools'
2020
ref: 'master'

src/Provider.spec.tsx

+19
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ describe('OptimizelyProvider', () => {
8383
});
8484

8585
it('should render successfully without user or userId provided', () => {
86+
// @ts-ignore
87+
mockReactClient.user = undefined;
8688
render(<OptimizelyProvider optimizely={mockReactClient} />);
8789

8890
expect(mockReactClient.setUser).toHaveBeenCalledWith(DefaultUser);
@@ -95,6 +97,8 @@ describe('OptimizelyProvider', () => {
9597
});
9698

9799
it('should succeed just userAttributes provided', () => {
100+
// @ts-ignore
101+
mockReactClient.user = undefined;
98102
render(<OptimizelyProvider optimizely={mockReactClient} userAttributes={{ attr1: 'value1' }} />);
99103

100104
expect(mockReactClient.setUser).toHaveBeenCalledWith({
@@ -103,6 +107,21 @@ describe('OptimizelyProvider', () => {
103107
});
104108
});
105109

110+
it('should succeed with the initial user available in client', () => {
111+
render(<OptimizelyProvider optimizely={mockReactClient} />);
112+
113+
expect(mockReactClient.setUser).toHaveBeenCalledWith(user1);
114+
});
115+
116+
it('should succeed with the initial user id and newly passed attributes', () => {
117+
render(<OptimizelyProvider optimizely={mockReactClient} userAttributes={{ attr1: 'value2' }} />);
118+
119+
expect(mockReactClient.setUser).toHaveBeenCalledWith({
120+
id: user1.id,
121+
attributes: { attr1: 'value2' },
122+
});
123+
});
124+
106125
it('should not update when isServerSide is true', () => {
107126
// Initial render
108127
const { rerender } = render(<OptimizelyProvider optimizely={mockReactClient} isServerSide={true} user={user1} />);

src/Provider.tsx

+6
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ export class OptimizelyProvider extends React.Component<OptimizelyProviderProps,
7373
};
7474
// deprecation warning
7575
logger.warn('Passing userId and userAttributes as props is deprecated, please switch to using `user` prop');
76+
} else if (optimizely.user) {
77+
const { id, attributes } = optimizely.user;
78+
finalUser = {
79+
id,
80+
attributes: userAttributes || attributes || {},
81+
};
7682
} else {
7783
finalUser = {
7884
id: DefaultUser.id,

0 commit comments

Comments
 (0)