Skip to content

Commit bc2d84d

Browse files
[FSSDK-10440] test debug 2
1 parent 5995ee8 commit bc2d84d

File tree

4 files changed

+47
-58
lines changed

4 files changed

+47
-58
lines changed

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@
5252
"@types/hoist-non-react-statics": "^3.3.5",
5353
"@types/jest": "^29.5.12",
5454
"@types/prop-types": "^15.7.12",
55-
"@types/react": "^18.3.3",
56-
"@types/react-dom": "^18.3.0",
55+
"@types/react": "^18.0.15",
56+
"@types/react-dom": "^18.0.6",
5757
"@typescript-eslint/eslint-plugin": "^5.6.2",
5858
"@typescript-eslint/parser": "^5.6.2",
5959
"eslint": "^8.57.0",
@@ -64,8 +64,8 @@
6464
"jest": "^29.7.0",
6565
"jest-environment-jsdom": "^29.7.0",
6666
"prettier": "^3.3.3",
67-
"react": "^18.3.1",
68-
"react-dom": "^18.3.1",
67+
"react": "^18.2.0",
68+
"react-dom": "^18.2.0",
6969
"rollup": "^3.29.4",
7070
"rollup-plugin-typescript2": "^0.36.0",
7171
"ts-jest": "^29.2.3",

src/hooks.spec.tsx

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -87,25 +87,18 @@ describe('hooks', () => {
8787
beforeEach(() => {
8888
getOnReadyPromise = ({ timeout = 0 }: any): Promise<OnReadyResult> =>
8989
new Promise((resolve) => {
90-
resolve(
91-
Object.assign(
92-
{
93-
success: readySuccess,
94-
reason: NotReadyReason.TIMEOUT,
95-
},
96-
!readySuccess && {
97-
dataReadyPromise: new Promise((r) =>
98-
setTimeout(
99-
() =>
100-
r({
101-
success: true,
102-
}),
103-
mockDelay
104-
)
105-
),
106-
}
107-
)
108-
);
90+
setTimeout(function () {
91+
resolve(
92+
Object.assign(
93+
{
94+
success: readySuccess,
95+
},
96+
!readySuccess && {
97+
dataReadyPromise: new Promise((r) => setTimeout(r, mockDelay)),
98+
}
99+
)
100+
);
101+
}, timeout || mockDelay);
109102
});
110103
activateMock = jest.fn();
111104
isFeatureEnabledMock = jest.fn();
@@ -205,7 +198,7 @@ describe('hooks', () => {
205198
await waitFor(() => expect(screen.getByTestId('result')).toHaveTextContent('null|true|false'));
206199
});
207200

208-
it.only('should respect the timeout option passed', async () => {
201+
it('should respect the timeout option passed', async () => {
209202
activateMock.mockReturnValue(null);
210203
readySuccess = false;
211204

@@ -214,18 +207,15 @@ describe('hooks', () => {
214207
<MyExperimentComponent options={{ timeout: mockDelay }} />
215208
</OptimizelyProvider>
216209
);
210+
217211
await waitFor(() => expect(screen.getByTestId('result')).toHaveTextContent('null|false|false')); // initial render
218212

219-
await optimizelyMock.onReady();
220213
await waitFor(() => expect(screen.getByTestId('result')).toHaveTextContent('null|false|true')); // when didTimeout
221214

222215
// Simulate datafile fetch completing after timeout has already passed
223216
// Activate now returns a variation
224-
// readySuccess = true;
225-
// activateMock.mockReturnValue('12345');
226-
// Wait for completion of dataReadyPromise
227-
// await optimizelyMock.onReady().then((res) => res.dataReadyPromise);
228-
// await waitFor(() => expect(screen.getByTestId('result')).toHaveTextContent('12345|true|true')); // when clientReady
217+
activateMock.mockReturnValue('12345');
218+
await waitFor(() => expect(screen.getByTestId('result')).toHaveTextContent('12345|true|true')); // when clientReady
229219
});
230220

231221
it('should gracefully handle the client promise rejecting after timeout', async () => {

src/hooks.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -170,32 +170,31 @@ function subscribeToInitialization(
170170
});
171171
break;
172172
case NotReadyReason.TIMEOUT:
173-
console.log('Timeoiut', res.reason)
173+
// console.log('Timeout', res.reason)
174174
hooksLogger.info(`Client did not become ready before timeout of ${timeout} ms, reason="${res.message}"`);
175175
onInitStateChange({
176176
clientReady: false,
177177
didTimeout: true,
178178
});
179-
res.dataReadyPromise?.then((r) => {
180-
console.log('r', r)
179+
res.dataReadyPromise?.then(() => {
181180
hooksLogger.info('Client became ready after timeout already elapsed');
182181
onInitStateChange({
183-
clientReady: r.success, // true
182+
clientReady: true,
184183
didTimeout: true,
185184
});
186185
});
187186
break;
188187
default:
189-
console.log('subscribeToInitialization default case', res)
188+
console.log('subscribeToInitialization default case', res);
190189
hooksLogger.warn(`Other reason client not ready, reason="${res.message}"`);
191190
onInitStateChange({
192-
clientReady: !!res.success,
191+
clientReady: false,
193192
didTimeout: true, // assume timeout
194193
});
195194
res.dataReadyPromise?.then(() => {
196195
hooksLogger.info('Client became ready later');
197196
onInitStateChange({
198-
clientReady: !!res.success,
197+
clientReady: true,
199198
didTimeout: true, // assume timeout
200199
});
201200
});

yarn.lock

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -854,25 +854,25 @@
854854
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
855855

856856
"@types/node@*":
857-
version "22.0.2"
858-
resolved "https://registry.yarnpkg.com/@types/node/-/node-22.0.2.tgz#9fb1a2b31970871e8bf696f0e8a40d2e6d2bd04e"
859-
integrity sha512-yPL6DyFwY5PiMVEwymNeqUTKsDczQBJ/5T7W/46RwLU/VH+AA8aT5TZkvBviLKLbbm0hlfftEkGrNzfRk/fofQ==
857+
version "22.1.0"
858+
resolved "https://registry.yarnpkg.com/@types/node/-/node-22.1.0.tgz#6d6adc648b5e03f0e83c78dc788c2b037d0ad94b"
859+
integrity sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==
860860
dependencies:
861-
undici-types "~6.11.1"
861+
undici-types "~6.13.0"
862862

863863
"@types/prop-types@*", "@types/prop-types@^15.7.12":
864864
version "15.7.12"
865865
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6"
866866
integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==
867867

868-
"@types/react-dom@^18.0.0", "@types/react-dom@^18.3.0":
868+
"@types/react-dom@^18.0.0", "@types/react-dom@^18.0.6":
869869
version "18.3.0"
870870
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0"
871871
integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==
872872
dependencies:
873873
"@types/react" "*"
874874

875-
"@types/react@*", "@types/react@^18.3.3":
875+
"@types/react@*", "@types/react@^18.0.15":
876876
version "18.3.3"
877877
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f"
878878
integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==
@@ -1310,13 +1310,13 @@ braces@^3.0.3:
13101310
fill-range "^7.1.1"
13111311

13121312
browserslist@^4.23.1:
1313-
version "4.23.2"
1314-
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed"
1315-
integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==
1313+
version "4.23.3"
1314+
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800"
1315+
integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==
13161316
dependencies:
1317-
caniuse-lite "^1.0.30001640"
1318-
electron-to-chromium "^1.4.820"
1319-
node-releases "^2.0.14"
1317+
caniuse-lite "^1.0.30001646"
1318+
electron-to-chromium "^1.5.4"
1319+
node-releases "^2.0.18"
13201320
update-browserslist-db "^1.1.0"
13211321

13221322
bs-logger@0.x:
@@ -1369,7 +1369,7 @@ camelcase@^6.2.0:
13691369
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
13701370
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
13711371

1372-
caniuse-lite@^1.0.30001640:
1372+
caniuse-lite@^1.0.30001646:
13731373
version "1.0.30001646"
13741374
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001646.tgz#d472f2882259ba032dd73ee069ff01bfd059b25d"
13751375
integrity sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==
@@ -1715,7 +1715,7 @@ ejs@^3.1.10:
17151715
dependencies:
17161716
jake "^10.8.5"
17171717

1718-
electron-to-chromium@^1.4.820:
1718+
electron-to-chromium@^1.5.4:
17191719
version "1.5.4"
17201720
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz#cd477c830dd6fca41fbd5465c1ff6ce08ac22343"
17211721
integrity sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==
@@ -3542,7 +3542,7 @@ node-int64@^0.4.0:
35423542
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
35433543
integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
35443544

3545-
node-releases@^2.0.14:
3545+
node-releases@^2.0.18:
35463546
version "2.0.18"
35473547
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
35483548
integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
@@ -3857,7 +3857,7 @@ randombytes@^2.1.0:
38573857
dependencies:
38583858
safe-buffer "^5.1.0"
38593859

3860-
react-dom@^18.3.1:
3860+
react-dom@^18.2.0:
38613861
version "18.3.1"
38623862
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4"
38633863
integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
@@ -3880,7 +3880,7 @@ react-is@^18.0.0:
38803880
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
38813881
integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
38823882

3883-
react@^18.3.1:
3883+
react@^18.2.0:
38843884
version "18.3.1"
38853885
resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891"
38863886
integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
@@ -4526,10 +4526,10 @@ unbox-primitive@^1.0.2:
45264526
has-symbols "^1.0.3"
45274527
which-boxed-primitive "^1.0.2"
45284528

4529-
undici-types@~6.11.1:
4530-
version "6.11.1"
4531-
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.11.1.tgz#432ea6e8efd54a48569705a699e62d8f4981b197"
4532-
integrity sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==
4529+
undici-types@~6.13.0:
4530+
version "6.13.0"
4531+
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5"
4532+
integrity sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==
45334533

45344534
universalify@^0.2.0:
45354535
version "0.2.0"

0 commit comments

Comments
 (0)