Skip to content

Commit 8351fcd

Browse files
committed
add unit tests for usePrivateIsArchivedMap
1 parent bb1c756 commit 8351fcd

1 file changed

Lines changed: 81 additions & 0 deletions

File tree

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
import {act, renderHook} from '@testing-library/react-native';
2+
import Onyx from 'react-native-onyx';
3+
import usePrivateIsArchivedMap from '@hooks/usePrivateIsArchivedMap';
4+
import ONYXKEYS from '@src/ONYXKEYS';
5+
import waitForBatchedUpdatesWithAct from '../utils/waitForBatchedUpdatesWithAct';
6+
7+
const REPORT_ID_1 = 'report_1';
8+
const REPORT_ID_2 = 'report_2';
9+
const REPORT_ID_3 = 'report_3';
10+
const ARCHIVED_DATE = '2024-01-15';
11+
const SECOND_ARCHIVED_DATE = '2024-03-22';
12+
13+
describe('usePrivateIsArchivedMap', () => {
14+
beforeEach(() => {
15+
Onyx.init({keys: ONYXKEYS});
16+
});
17+
18+
afterEach(async () => {
19+
await act(async () => {
20+
await Onyx.clear();
21+
});
22+
await waitForBatchedUpdatesWithAct();
23+
});
24+
25+
it('returns an empty map when no report name value pairs are set', () => {
26+
const {result} = renderHook(() => usePrivateIsArchivedMap());
27+
expect(result.current).toEqual({});
28+
});
29+
30+
it('maps report keys to their private_isArchived values', async () => {
31+
await act(async () => {
32+
await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_1}`, {private_isArchived: ARCHIVED_DATE});
33+
await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_2}`, {private_isArchived: SECOND_ARCHIVED_DATE});
34+
});
35+
36+
const {result} = renderHook(() => usePrivateIsArchivedMap());
37+
38+
expect(result.current[`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_1}`]).toBe(ARCHIVED_DATE);
39+
expect(result.current[`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_2}`]).toBe(SECOND_ARCHIVED_DATE);
40+
});
41+
42+
it('returns undefined for reports that are not archived', async () => {
43+
await act(async () => {
44+
await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_3}`, {someOtherField: 'value'});
45+
});
46+
47+
const {result} = renderHook(() => usePrivateIsArchivedMap());
48+
49+
expect(result.current[`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_3}`]).toBeUndefined();
50+
});
51+
52+
it('updates the map when Onyx data changes', async () => {
53+
await act(async () => {
54+
await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_1}`, {someOtherField: 'value'});
55+
});
56+
57+
const {result} = renderHook(() => usePrivateIsArchivedMap());
58+
59+
expect(result.current[`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_1}`]).toBeUndefined();
60+
61+
await act(async () => {
62+
await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_1}`, {private_isArchived: ARCHIVED_DATE});
63+
});
64+
65+
await waitForBatchedUpdatesWithAct();
66+
67+
expect(result.current[`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_1}`]).toBe(ARCHIVED_DATE);
68+
});
69+
70+
it('handles a mix of archived and non-archived reports', async () => {
71+
await act(async () => {
72+
await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_1}`, {private_isArchived: ARCHIVED_DATE});
73+
await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_2}`, {someOtherField: 'value'});
74+
});
75+
76+
const {result} = renderHook(() => usePrivateIsArchivedMap());
77+
78+
expect(result.current[`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_1}`]).toBe(ARCHIVED_DATE);
79+
expect(result.current[`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${REPORT_ID_2}`]).toBeUndefined();
80+
});
81+
});

0 commit comments

Comments
 (0)