@youversion/platform-react-hooks 1.18.1 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/AGENTS.md +3 -7
- package/CHANGELOG.md +32 -0
- package/dist/__tests__/mocks/bibles.d.ts +6 -1
- package/dist/__tests__/mocks/bibles.d.ts.map +1 -1
- package/dist/__tests__/mocks/bibles.js +10 -0
- package/dist/__tests__/mocks/bibles.js.map +1 -1
- package/dist/__tests__/mocks/core-mock-factory.d.ts +83 -0
- package/dist/__tests__/mocks/core-mock-factory.d.ts.map +1 -0
- package/dist/__tests__/mocks/core-mock-factory.js +138 -0
- package/dist/__tests__/mocks/core-mock-factory.js.map +1 -0
- package/dist/context/ReaderContext.d.ts +6 -0
- package/dist/context/ReaderContext.d.ts.map +1 -1
- package/dist/context/ReaderContext.js +6 -0
- package/dist/context/ReaderContext.js.map +1 -1
- package/dist/context/ReaderProvider.d.ts +3 -0
- package/dist/context/ReaderProvider.d.ts.map +1 -1
- package/dist/context/ReaderProvider.js +3 -0
- package/dist/context/ReaderProvider.js.map +1 -1
- package/dist/context/VerseSelectionContext.d.ts +6 -0
- package/dist/context/VerseSelectionContext.d.ts.map +1 -1
- package/dist/context/VerseSelectionContext.js +3 -0
- package/dist/context/VerseSelectionContext.js.map +1 -1
- package/dist/context/VerseSelectionProvider.d.ts +3 -0
- package/dist/context/VerseSelectionProvider.d.ts.map +1 -1
- package/dist/context/VerseSelectionProvider.js +3 -0
- package/dist/context/VerseSelectionProvider.js.map +1 -1
- package/dist/test/utils.d.ts +7 -0
- package/dist/test/utils.d.ts.map +1 -0
- package/dist/test/utils.js +7 -0
- package/dist/test/utils.js.map +1 -0
- package/dist/useChapterNavigation.d.ts +3 -0
- package/dist/useChapterNavigation.d.ts.map +1 -1
- package/dist/useChapterNavigation.js +3 -0
- package/dist/useChapterNavigation.js.map +1 -1
- package/dist/useInitData.d.ts +4 -0
- package/dist/useInitData.d.ts.map +1 -1
- package/dist/useInitData.js +4 -0
- package/dist/useInitData.js.map +1 -1
- package/dist/useVerseSelection.d.ts +3 -0
- package/dist/useVerseSelection.d.ts.map +1 -1
- package/dist/useVerseSelection.js +3 -0
- package/dist/useVerseSelection.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/mocks/bibles.ts +18 -1
- package/src/__tests__/mocks/core-mock-factory.ts +226 -0
- package/src/context/ReaderContext.tsx +6 -0
- package/src/context/ReaderProvider.tsx +3 -0
- package/src/context/VerseSelectionContext.tsx +6 -0
- package/src/context/VerseSelectionProvider.tsx +3 -0
- package/src/context/YouVersionAuthProvider.test.tsx +14 -131
- package/src/test/utils.tsx +12 -0
- package/src/useBibleClient.test.tsx +8 -37
- package/src/useBook.test.tsx +158 -0
- package/src/useBooks.test.tsx +148 -0
- package/src/useChapter.test.tsx +70 -128
- package/src/useChapterNavigation.ts +3 -0
- package/src/useChapters.test.tsx +80 -150
- package/src/useHighlights.test.tsx +33 -104
- package/src/useInitData.ts +4 -0
- package/src/useLanguage.test.tsx +8 -10
- package/src/useLanguageClient.test.tsx +9 -25
- package/src/useLanguages.test.tsx +27 -64
- package/src/usePassage.test.tsx +304 -0
- package/src/useTheme.test.tsx +32 -0
- package/src/useVOTD.test.tsx +28 -67
- package/src/useVerse.test.tsx +73 -149
- package/src/useVerseSelection.ts +3 -0
- package/src/useVerses.test.tsx +37 -104
- package/src/useVersion.test.tsx +29 -66
- package/src/useVersions.test.tsx +72 -154
- package/src/useYVAuth.test.tsx +26 -134
- package/src/utility/getDayOfYear.test.ts +48 -0
- package/vitest.config.ts +12 -0
- package/src/context/ReaderProvider.test.tsx +0 -264
- package/src/context/VerseSelectionProvider.test.tsx +0 -362
- package/src/useChapterNavigation.test.tsx +0 -160
- package/src/useVerseSelection.test.tsx +0 -33
- package/vitest.setup.ts +0 -1
package/src/useVersions.test.tsx
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { renderHook, waitFor, act } from '@testing-library/react';
|
|
2
|
-
import { describe,
|
|
3
|
-
import type { ReactNode } from 'react';
|
|
2
|
+
import { describe, expect, vi, beforeEach, it } from 'vitest';
|
|
4
3
|
import { useVersions } from './useVersions';
|
|
5
|
-
import { YouVersionContext } from './context';
|
|
6
4
|
import { type BibleClient, type Collection, type BibleVersion } from '@youversion/platform-core';
|
|
7
5
|
import { useBibleClient } from './useBibleClient';
|
|
6
|
+
import { createYVWrapper } from './test/utils';
|
|
8
7
|
|
|
9
8
|
vi.mock('./useBibleClient');
|
|
10
9
|
|
|
11
10
|
describe('useVersions', () => {
|
|
12
|
-
const mockAppKey = 'test-app-key';
|
|
13
11
|
const mockGetVersions = vi.fn();
|
|
14
12
|
|
|
15
13
|
const mockVersions: Collection<BibleVersion> = {
|
|
@@ -38,15 +36,7 @@ describe('useVersions', () => {
|
|
|
38
36
|
next_page_token: null,
|
|
39
37
|
};
|
|
40
38
|
|
|
41
|
-
const createWrapper = (contextValue: { appKey: string }) => {
|
|
42
|
-
return ({ children }: { children: ReactNode }) => (
|
|
43
|
-
<YouVersionContext.Provider value={contextValue}>{children}</YouVersionContext.Provider>
|
|
44
|
-
);
|
|
45
|
-
};
|
|
46
|
-
|
|
47
39
|
beforeEach(() => {
|
|
48
|
-
vi.resetAllMocks();
|
|
49
|
-
|
|
50
40
|
mockGetVersions.mockResolvedValue(mockVersions);
|
|
51
41
|
|
|
52
42
|
const mockClient: Partial<BibleClient> = { getVersions: mockGetVersions };
|
|
@@ -55,10 +45,7 @@ describe('useVersions', () => {
|
|
|
55
45
|
|
|
56
46
|
describe('fetching versions', () => {
|
|
57
47
|
it('should fetch versions with default language range', async () => {
|
|
58
|
-
const wrapper =
|
|
59
|
-
appKey: mockAppKey,
|
|
60
|
-
});
|
|
61
|
-
|
|
48
|
+
const wrapper = createYVWrapper();
|
|
62
49
|
const { result } = renderHook(() => useVersions(), { wrapper });
|
|
63
50
|
|
|
64
51
|
expect(result.current.loading).toBe(true);
|
|
@@ -68,60 +55,48 @@ describe('useVersions', () => {
|
|
|
68
55
|
expect(result.current.loading).toBe(false);
|
|
69
56
|
});
|
|
70
57
|
|
|
71
|
-
expect(mockGetVersions).toHaveBeenCalledWith('en', undefined, undefined);
|
|
72
|
-
expect(result.current.versions).toEqual(mockVersions);
|
|
58
|
+
expect.soft(mockGetVersions).toHaveBeenCalledWith('en', undefined, undefined);
|
|
59
|
+
expect.soft(result.current.versions).toEqual(mockVersions);
|
|
73
60
|
});
|
|
74
61
|
|
|
75
62
|
it('should fetch versions with custom language range string', async () => {
|
|
76
|
-
const wrapper =
|
|
77
|
-
appKey: mockAppKey,
|
|
78
|
-
});
|
|
79
|
-
|
|
63
|
+
const wrapper = createYVWrapper();
|
|
80
64
|
const { result } = renderHook(() => useVersions('es'), { wrapper });
|
|
81
65
|
|
|
82
66
|
await waitFor(() => {
|
|
83
67
|
expect(result.current.loading).toBe(false);
|
|
84
68
|
});
|
|
85
69
|
|
|
86
|
-
expect(mockGetVersions).toHaveBeenCalledWith('es', undefined, undefined);
|
|
87
|
-
expect(result.current.versions).toEqual(mockVersions);
|
|
70
|
+
expect.soft(mockGetVersions).toHaveBeenCalledWith('es', undefined, undefined);
|
|
71
|
+
expect.soft(result.current.versions).toEqual(mockVersions);
|
|
88
72
|
});
|
|
89
73
|
|
|
90
74
|
it('should fetch versions with language range array', async () => {
|
|
91
|
-
const wrapper =
|
|
92
|
-
appKey: mockAppKey,
|
|
93
|
-
});
|
|
94
|
-
|
|
75
|
+
const wrapper = createYVWrapper();
|
|
95
76
|
const { result } = renderHook(() => useVersions(['en', 'es', 'fr']), { wrapper });
|
|
96
77
|
|
|
97
78
|
await waitFor(() => {
|
|
98
79
|
expect(result.current.loading).toBe(false);
|
|
99
80
|
});
|
|
100
81
|
|
|
101
|
-
expect(mockGetVersions).toHaveBeenCalledWith(['en', 'es', 'fr'], undefined, undefined);
|
|
102
|
-
expect(result.current.versions).toEqual(mockVersions);
|
|
82
|
+
expect.soft(mockGetVersions).toHaveBeenCalledWith(['en', 'es', 'fr'], undefined, undefined);
|
|
83
|
+
expect.soft(result.current.versions).toEqual(mockVersions);
|
|
103
84
|
});
|
|
104
85
|
|
|
105
86
|
it('should fetch versions with license ID', async () => {
|
|
106
|
-
const wrapper =
|
|
107
|
-
appKey: mockAppKey,
|
|
108
|
-
});
|
|
109
|
-
|
|
87
|
+
const wrapper = createYVWrapper();
|
|
110
88
|
const { result } = renderHook(() => useVersions('en', 123), { wrapper });
|
|
111
89
|
|
|
112
90
|
await waitFor(() => {
|
|
113
91
|
expect(result.current.loading).toBe(false);
|
|
114
92
|
});
|
|
115
93
|
|
|
116
|
-
expect(mockGetVersions).toHaveBeenCalledWith('en', 123, undefined);
|
|
117
|
-
expect(result.current.versions).toEqual(mockVersions);
|
|
94
|
+
expect.soft(mockGetVersions).toHaveBeenCalledWith('en', 123, undefined);
|
|
95
|
+
expect.soft(result.current.versions).toEqual(mockVersions);
|
|
118
96
|
});
|
|
119
97
|
|
|
120
98
|
it('should fetch versions with string license ID', async () => {
|
|
121
|
-
const wrapper =
|
|
122
|
-
appKey: mockAppKey,
|
|
123
|
-
});
|
|
124
|
-
|
|
99
|
+
const wrapper = createYVWrapper();
|
|
125
100
|
const { result } = renderHook(() => useVersions('en', 'license-abc'), { wrapper });
|
|
126
101
|
|
|
127
102
|
await waitFor(() => {
|
|
@@ -134,10 +109,7 @@ describe('useVersions', () => {
|
|
|
134
109
|
|
|
135
110
|
describe('fetching with options', () => {
|
|
136
111
|
it('should fetch versions with page_size option', async () => {
|
|
137
|
-
const wrapper =
|
|
138
|
-
appKey: mockAppKey,
|
|
139
|
-
});
|
|
140
|
-
|
|
112
|
+
const wrapper = createYVWrapper();
|
|
141
113
|
const { result } = renderHook(() => useVersions('en', undefined, { page_size: 10 }), {
|
|
142
114
|
wrapper,
|
|
143
115
|
});
|
|
@@ -155,10 +127,7 @@ describe('useVersions', () => {
|
|
|
155
127
|
});
|
|
156
128
|
|
|
157
129
|
it('should fetch versions with page_size "*" and fields', async () => {
|
|
158
|
-
const wrapper =
|
|
159
|
-
appKey: mockAppKey,
|
|
160
|
-
});
|
|
161
|
-
|
|
130
|
+
const wrapper = createYVWrapper();
|
|
162
131
|
const { result } = renderHook(
|
|
163
132
|
() => useVersions('en', undefined, { page_size: '*', fields: ['id', 'abbreviation'] }),
|
|
164
133
|
{ wrapper },
|
|
@@ -177,10 +146,7 @@ describe('useVersions', () => {
|
|
|
177
146
|
});
|
|
178
147
|
|
|
179
148
|
it('should fetch versions with page_token option', async () => {
|
|
180
|
-
const wrapper =
|
|
181
|
-
appKey: mockAppKey,
|
|
182
|
-
});
|
|
183
|
-
|
|
149
|
+
const wrapper = createYVWrapper();
|
|
184
150
|
const { result } = renderHook(
|
|
185
151
|
() => useVersions('en', undefined, { page_token: 'next-page-token' }),
|
|
186
152
|
{ wrapper },
|
|
@@ -199,10 +165,7 @@ describe('useVersions', () => {
|
|
|
199
165
|
});
|
|
200
166
|
|
|
201
167
|
it('should fetch versions with fields option', async () => {
|
|
202
|
-
const wrapper =
|
|
203
|
-
appKey: mockAppKey,
|
|
204
|
-
});
|
|
205
|
-
|
|
168
|
+
const wrapper = createYVWrapper();
|
|
206
169
|
const { result } = renderHook(
|
|
207
170
|
() => useVersions('en', undefined, { fields: ['id', 'title', 'abbreviation'] }),
|
|
208
171
|
{ wrapper },
|
|
@@ -221,10 +184,7 @@ describe('useVersions', () => {
|
|
|
221
184
|
});
|
|
222
185
|
|
|
223
186
|
it('should fetch versions with all_available option', async () => {
|
|
224
|
-
const wrapper =
|
|
225
|
-
appKey: mockAppKey,
|
|
226
|
-
});
|
|
227
|
-
|
|
187
|
+
const wrapper = createYVWrapper();
|
|
228
188
|
const { result } = renderHook(() => useVersions('en', undefined, { all_available: true }), {
|
|
229
189
|
wrapper,
|
|
230
190
|
});
|
|
@@ -242,10 +202,7 @@ describe('useVersions', () => {
|
|
|
242
202
|
});
|
|
243
203
|
|
|
244
204
|
it('should fetch versions with all options combined', async () => {
|
|
245
|
-
const wrapper =
|
|
246
|
-
appKey: mockAppKey,
|
|
247
|
-
});
|
|
248
|
-
|
|
205
|
+
const wrapper = createYVWrapper();
|
|
249
206
|
const { result } = renderHook(
|
|
250
207
|
() =>
|
|
251
208
|
useVersions('en', 456, {
|
|
@@ -272,10 +229,7 @@ describe('useVersions', () => {
|
|
|
272
229
|
|
|
273
230
|
describe('refetch behavior', () => {
|
|
274
231
|
it('should refetch when languageRanges changes', async () => {
|
|
275
|
-
const wrapper =
|
|
276
|
-
appKey: mockAppKey,
|
|
277
|
-
});
|
|
278
|
-
|
|
232
|
+
const wrapper = createYVWrapper();
|
|
279
233
|
const { result, rerender } = renderHook(({ lang }) => useVersions(lang), {
|
|
280
234
|
wrapper,
|
|
281
235
|
initialProps: { lang: 'en' as string | string[] },
|
|
@@ -285,8 +239,8 @@ describe('useVersions', () => {
|
|
|
285
239
|
expect(result.current.loading).toBe(false);
|
|
286
240
|
});
|
|
287
241
|
|
|
288
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
289
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', undefined, undefined);
|
|
242
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
243
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', undefined, undefined);
|
|
290
244
|
|
|
291
245
|
rerender({ lang: 'es' });
|
|
292
246
|
|
|
@@ -294,15 +248,12 @@ describe('useVersions', () => {
|
|
|
294
248
|
expect(result.current.loading).toBe(false);
|
|
295
249
|
});
|
|
296
250
|
|
|
297
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
298
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(2, 'es', undefined, undefined);
|
|
251
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
252
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(2, 'es', undefined, undefined);
|
|
299
253
|
});
|
|
300
254
|
|
|
301
255
|
it('should refetch when languageRanges array changes', async () => {
|
|
302
|
-
const wrapper =
|
|
303
|
-
appKey: mockAppKey,
|
|
304
|
-
});
|
|
305
|
-
|
|
256
|
+
const wrapper = createYVWrapper();
|
|
306
257
|
const { result, rerender } = renderHook(({ lang }) => useVersions(lang), {
|
|
307
258
|
wrapper,
|
|
308
259
|
initialProps: { lang: ['en', 'es'] as string | string[] },
|
|
@@ -312,8 +263,8 @@ describe('useVersions', () => {
|
|
|
312
263
|
expect(result.current.loading).toBe(false);
|
|
313
264
|
});
|
|
314
265
|
|
|
315
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
316
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(1, ['en', 'es'], undefined, undefined);
|
|
266
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
267
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(1, ['en', 'es'], undefined, undefined);
|
|
317
268
|
|
|
318
269
|
rerender({ lang: ['en', 'fr'] });
|
|
319
270
|
|
|
@@ -321,15 +272,12 @@ describe('useVersions', () => {
|
|
|
321
272
|
expect(result.current.loading).toBe(false);
|
|
322
273
|
});
|
|
323
274
|
|
|
324
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
325
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(2, ['en', 'fr'], undefined, undefined);
|
|
275
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
276
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(2, ['en', 'fr'], undefined, undefined);
|
|
326
277
|
});
|
|
327
278
|
|
|
328
279
|
it('should refetch when licenseId changes', async () => {
|
|
329
|
-
const wrapper =
|
|
330
|
-
appKey: mockAppKey,
|
|
331
|
-
});
|
|
332
|
-
|
|
280
|
+
const wrapper = createYVWrapper();
|
|
333
281
|
const { result, rerender } = renderHook(({ license }) => useVersions('en', license), {
|
|
334
282
|
wrapper,
|
|
335
283
|
initialProps: { license: 123 as string | number | undefined },
|
|
@@ -339,8 +287,8 @@ describe('useVersions', () => {
|
|
|
339
287
|
expect(result.current.loading).toBe(false);
|
|
340
288
|
});
|
|
341
289
|
|
|
342
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
343
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', 123, undefined);
|
|
290
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
291
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', 123, undefined);
|
|
344
292
|
|
|
345
293
|
rerender({ license: 456 });
|
|
346
294
|
|
|
@@ -348,15 +296,12 @@ describe('useVersions', () => {
|
|
|
348
296
|
expect(result.current.loading).toBe(false);
|
|
349
297
|
});
|
|
350
298
|
|
|
351
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
352
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(2, 'en', 456, undefined);
|
|
299
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
300
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(2, 'en', 456, undefined);
|
|
353
301
|
});
|
|
354
302
|
|
|
355
303
|
it('should refetch when page_size changes', async () => {
|
|
356
|
-
const wrapper =
|
|
357
|
-
appKey: mockAppKey,
|
|
358
|
-
});
|
|
359
|
-
|
|
304
|
+
const wrapper = createYVWrapper();
|
|
360
305
|
const { result, rerender } = renderHook(
|
|
361
306
|
({ options }) => useVersions('en', undefined, options),
|
|
362
307
|
{
|
|
@@ -369,8 +314,8 @@ describe('useVersions', () => {
|
|
|
369
314
|
expect(result.current.loading).toBe(false);
|
|
370
315
|
});
|
|
371
316
|
|
|
372
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
373
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', undefined, {
|
|
317
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
318
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', undefined, {
|
|
374
319
|
page_size: 10,
|
|
375
320
|
page_token: undefined,
|
|
376
321
|
fields: undefined,
|
|
@@ -383,8 +328,8 @@ describe('useVersions', () => {
|
|
|
383
328
|
expect(result.current.loading).toBe(false);
|
|
384
329
|
});
|
|
385
330
|
|
|
386
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
387
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(2, 'en', undefined, {
|
|
331
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
332
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(2, 'en', undefined, {
|
|
388
333
|
page_size: 20,
|
|
389
334
|
page_token: undefined,
|
|
390
335
|
fields: undefined,
|
|
@@ -393,10 +338,7 @@ describe('useVersions', () => {
|
|
|
393
338
|
});
|
|
394
339
|
|
|
395
340
|
it('should refetch when page_token changes', async () => {
|
|
396
|
-
const wrapper =
|
|
397
|
-
appKey: mockAppKey,
|
|
398
|
-
});
|
|
399
|
-
|
|
341
|
+
const wrapper = createYVWrapper();
|
|
400
342
|
const { result, rerender } = renderHook(
|
|
401
343
|
({ options }) => useVersions('en', undefined, options),
|
|
402
344
|
{
|
|
@@ -409,8 +351,8 @@ describe('useVersions', () => {
|
|
|
409
351
|
expect(result.current.loading).toBe(false);
|
|
410
352
|
});
|
|
411
353
|
|
|
412
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
413
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', undefined, {
|
|
354
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
355
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', undefined, {
|
|
414
356
|
page_size: undefined,
|
|
415
357
|
page_token: 'token-1',
|
|
416
358
|
fields: undefined,
|
|
@@ -423,8 +365,8 @@ describe('useVersions', () => {
|
|
|
423
365
|
expect(result.current.loading).toBe(false);
|
|
424
366
|
});
|
|
425
367
|
|
|
426
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
427
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(2, 'en', undefined, {
|
|
368
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
369
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(2, 'en', undefined, {
|
|
428
370
|
page_size: undefined,
|
|
429
371
|
page_token: 'token-2',
|
|
430
372
|
fields: undefined,
|
|
@@ -433,10 +375,7 @@ describe('useVersions', () => {
|
|
|
433
375
|
});
|
|
434
376
|
|
|
435
377
|
it('should refetch when fields changes', async () => {
|
|
436
|
-
const wrapper =
|
|
437
|
-
appKey: mockAppKey,
|
|
438
|
-
});
|
|
439
|
-
|
|
378
|
+
const wrapper = createYVWrapper();
|
|
440
379
|
const { result, rerender } = renderHook(
|
|
441
380
|
({ options }) => useVersions('en', undefined, options),
|
|
442
381
|
{
|
|
@@ -449,8 +388,8 @@ describe('useVersions', () => {
|
|
|
449
388
|
expect(result.current.loading).toBe(false);
|
|
450
389
|
});
|
|
451
390
|
|
|
452
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
453
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', undefined, {
|
|
391
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
392
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', undefined, {
|
|
454
393
|
page_size: undefined,
|
|
455
394
|
page_token: undefined,
|
|
456
395
|
fields: ['id'],
|
|
@@ -463,8 +402,8 @@ describe('useVersions', () => {
|
|
|
463
402
|
expect(result.current.loading).toBe(false);
|
|
464
403
|
});
|
|
465
404
|
|
|
466
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
467
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(2, 'en', undefined, {
|
|
405
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
406
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(2, 'en', undefined, {
|
|
468
407
|
page_size: undefined,
|
|
469
408
|
page_token: undefined,
|
|
470
409
|
fields: ['id', 'title'],
|
|
@@ -473,10 +412,7 @@ describe('useVersions', () => {
|
|
|
473
412
|
});
|
|
474
413
|
|
|
475
414
|
it('should refetch when all_available changes', async () => {
|
|
476
|
-
const wrapper =
|
|
477
|
-
appKey: mockAppKey,
|
|
478
|
-
});
|
|
479
|
-
|
|
415
|
+
const wrapper = createYVWrapper();
|
|
480
416
|
const { result, rerender } = renderHook(
|
|
481
417
|
({ options }) => useVersions('en', undefined, options),
|
|
482
418
|
{
|
|
@@ -489,8 +425,8 @@ describe('useVersions', () => {
|
|
|
489
425
|
expect(result.current.loading).toBe(false);
|
|
490
426
|
});
|
|
491
427
|
|
|
492
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
493
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', undefined, {
|
|
428
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
429
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', undefined, {
|
|
494
430
|
page_size: undefined,
|
|
495
431
|
page_token: undefined,
|
|
496
432
|
fields: undefined,
|
|
@@ -503,8 +439,8 @@ describe('useVersions', () => {
|
|
|
503
439
|
expect(result.current.loading).toBe(false);
|
|
504
440
|
});
|
|
505
441
|
|
|
506
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
507
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(2, 'en', undefined, {
|
|
442
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(2);
|
|
443
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(2, 'en', undefined, {
|
|
508
444
|
page_size: undefined,
|
|
509
445
|
page_token: undefined,
|
|
510
446
|
fields: undefined,
|
|
@@ -515,10 +451,7 @@ describe('useVersions', () => {
|
|
|
515
451
|
|
|
516
452
|
describe('enabled option', () => {
|
|
517
453
|
it('should not fetch when enabled is false', async () => {
|
|
518
|
-
const wrapper =
|
|
519
|
-
appKey: mockAppKey,
|
|
520
|
-
});
|
|
521
|
-
|
|
454
|
+
const wrapper = createYVWrapper();
|
|
522
455
|
const { result } = renderHook(() => useVersions('en', undefined, { enabled: false }), {
|
|
523
456
|
wrapper,
|
|
524
457
|
});
|
|
@@ -527,15 +460,12 @@ describe('useVersions', () => {
|
|
|
527
460
|
expect(result.current.loading).toBe(false);
|
|
528
461
|
});
|
|
529
462
|
|
|
530
|
-
expect(mockGetVersions).not.toHaveBeenCalled();
|
|
531
|
-
expect(result.current.versions).toBe(null);
|
|
463
|
+
expect.soft(mockGetVersions).not.toHaveBeenCalled();
|
|
464
|
+
expect.soft(result.current.versions).toBe(null);
|
|
532
465
|
});
|
|
533
466
|
|
|
534
467
|
it('should fetch when enabled is true', async () => {
|
|
535
|
-
const wrapper =
|
|
536
|
-
appKey: mockAppKey,
|
|
537
|
-
});
|
|
538
|
-
|
|
468
|
+
const wrapper = createYVWrapper();
|
|
539
469
|
const { result } = renderHook(() => useVersions('en', undefined, { enabled: true }), {
|
|
540
470
|
wrapper,
|
|
541
471
|
});
|
|
@@ -544,15 +474,12 @@ describe('useVersions', () => {
|
|
|
544
474
|
expect(result.current.loading).toBe(false);
|
|
545
475
|
});
|
|
546
476
|
|
|
547
|
-
expect(mockGetVersions).toHaveBeenCalled();
|
|
548
|
-
expect(result.current.versions).toEqual(mockVersions);
|
|
477
|
+
expect.soft(mockGetVersions).toHaveBeenCalled();
|
|
478
|
+
expect.soft(result.current.versions).toEqual(mockVersions);
|
|
549
479
|
});
|
|
550
480
|
|
|
551
481
|
it('should fetch when enabled is not specified', async () => {
|
|
552
|
-
const wrapper =
|
|
553
|
-
appKey: mockAppKey,
|
|
554
|
-
});
|
|
555
|
-
|
|
482
|
+
const wrapper = createYVWrapper();
|
|
556
483
|
const { result } = renderHook(() => useVersions('en', undefined, { page_size: 10 }), {
|
|
557
484
|
wrapper,
|
|
558
485
|
});
|
|
@@ -567,31 +494,25 @@ describe('useVersions', () => {
|
|
|
567
494
|
|
|
568
495
|
describe('error handling', () => {
|
|
569
496
|
it('should handle fetch errors', async () => {
|
|
497
|
+
const wrapper = createYVWrapper();
|
|
570
498
|
const error = new Error('Failed to fetch versions');
|
|
571
499
|
mockGetVersions.mockRejectedValueOnce(error);
|
|
572
500
|
|
|
573
|
-
const wrapper = createWrapper({
|
|
574
|
-
appKey: mockAppKey,
|
|
575
|
-
});
|
|
576
|
-
|
|
577
501
|
const { result } = renderHook(() => useVersions('en'), { wrapper });
|
|
578
502
|
|
|
579
503
|
await waitFor(() => {
|
|
580
504
|
expect(result.current.loading).toBe(false);
|
|
581
505
|
});
|
|
582
506
|
|
|
583
|
-
expect(result.current.error).toEqual(error);
|
|
584
|
-
expect(result.current.versions).toBe(null);
|
|
507
|
+
expect.soft(result.current.error).toEqual(error);
|
|
508
|
+
expect.soft(result.current.versions).toBe(null);
|
|
585
509
|
});
|
|
586
510
|
|
|
587
511
|
it('should clear error on successful refetch', async () => {
|
|
512
|
+
const wrapper = createYVWrapper();
|
|
588
513
|
const error = new Error('Failed to fetch versions');
|
|
589
514
|
mockGetVersions.mockRejectedValueOnce(error).mockResolvedValueOnce(mockVersions);
|
|
590
515
|
|
|
591
|
-
const wrapper = createWrapper({
|
|
592
|
-
appKey: mockAppKey,
|
|
593
|
-
});
|
|
594
|
-
|
|
595
516
|
const { result } = renderHook(() => useVersions('en'), { wrapper });
|
|
596
517
|
|
|
597
518
|
await waitFor(() => {
|
|
@@ -609,25 +530,22 @@ describe('useVersions', () => {
|
|
|
609
530
|
expect(result.current.error).toBe(null);
|
|
610
531
|
});
|
|
611
532
|
|
|
612
|
-
expect(result.current.error).toBe(null);
|
|
613
|
-
expect(result.current.versions).toEqual(mockVersions);
|
|
533
|
+
expect.soft(result.current.error).toBe(null);
|
|
534
|
+
expect.soft(result.current.versions).toEqual(mockVersions);
|
|
614
535
|
});
|
|
615
536
|
});
|
|
616
537
|
|
|
617
538
|
describe('manual refetch', () => {
|
|
618
539
|
it('should support manual refetch', async () => {
|
|
619
|
-
const wrapper =
|
|
620
|
-
appKey: mockAppKey,
|
|
621
|
-
});
|
|
622
|
-
|
|
540
|
+
const wrapper = createYVWrapper();
|
|
623
541
|
const { result } = renderHook(() => useVersions('en'), { wrapper });
|
|
624
542
|
|
|
625
543
|
await waitFor(() => {
|
|
626
544
|
expect(result.current.loading).toBe(false);
|
|
627
545
|
});
|
|
628
546
|
|
|
629
|
-
expect(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
630
|
-
expect(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', undefined, undefined);
|
|
547
|
+
expect.soft(mockGetVersions).toHaveBeenCalledTimes(1);
|
|
548
|
+
expect.soft(mockGetVersions).toHaveBeenNthCalledWith(1, 'en', undefined, undefined);
|
|
631
549
|
|
|
632
550
|
act(() => {
|
|
633
551
|
result.current.refetch();
|