Skip to content

Commit 43d1cdf

Browse files
authored
Merge pull request #179 from nada-deriv/nada/FEQ-2416/use-advertiser-relations
Nada/FEQ-2416/advertiser relations, block, unblock
2 parents 7a96db6 + 95d2330 commit 43d1cdf

File tree

4 files changed

+157
-6
lines changed

4 files changed

+157
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
import { useP2PAdvertiserRelations } from '@deriv-com/api-hooks';
2+
import { renderHook } from '@testing-library/react';
3+
import useAdvertiserRelations from '../useAdvertiserRelations';
4+
5+
jest.mock('@deriv-com/api-hooks', () => ({
6+
useP2PAdvertiserRelations: jest.fn().mockReturnValue({
7+
data: undefined,
8+
mutate: jest.fn(),
9+
rest: {},
10+
}),
11+
}));
12+
13+
const mockInvalidate = jest.fn();
14+
15+
jest.mock('../../../useInvalidateQuery', () => () => mockInvalidate);
16+
17+
const mockUseP2PAdvertiserRelations = useP2PAdvertiserRelations as jest.Mock;
18+
19+
describe('useAdvertiserRelations', () => {
20+
it('should return data as undefined if not defined', () => {
21+
const { result } = renderHook(() => useAdvertiserRelations());
22+
23+
expect(result.current.data).toBeUndefined();
24+
});
25+
26+
it('should return blockedAdvertisers as empty if not present', () => {
27+
mockUseP2PAdvertiserRelations.mockReturnValueOnce({
28+
data: {
29+
blocked_advertisers: [],
30+
favourite_advertisers: [
31+
{
32+
created_time: 1627584000,
33+
id: '19',
34+
name: 'client CR123',
35+
},
36+
],
37+
},
38+
mutate: jest.fn(),
39+
rest: {},
40+
});
41+
42+
const { result } = renderHook(() => useAdvertiserRelations());
43+
44+
expect(result.current.blockedAdvertisers).toEqual([]);
45+
46+
expect(result.current.favouriteAdvertisers).toEqual([
47+
{
48+
created_time: 1627584000,
49+
id: '19',
50+
name: 'client CR123',
51+
},
52+
]);
53+
});
54+
55+
it('should return favouriteAdvertisers as empty if not present', () => {
56+
mockUseP2PAdvertiserRelations.mockReturnValueOnce({
57+
data: {
58+
blocked_advertisers: [
59+
{
60+
created_time: 1627584000,
61+
id: '19',
62+
name: 'client CR123',
63+
},
64+
],
65+
favourite_advertisers: [],
66+
},
67+
mutate: jest.fn(),
68+
rest: {},
69+
});
70+
71+
const { result } = renderHook(() => useAdvertiserRelations());
72+
73+
expect(result.current.favouriteAdvertisers).toEqual([]);
74+
75+
expect(result.current.blockedAdvertisers).toEqual([
76+
{
77+
created_time: 1627584000,
78+
id: '19',
79+
name: 'client CR123',
80+
},
81+
]);
82+
});
83+
84+
it('should call invalidate when onSuccess is called', () => {
85+
renderHook(() => useAdvertiserRelations());
86+
87+
const onSuccess = mockUseP2PAdvertiserRelations.mock.calls[0][0].onSuccess;
88+
89+
onSuccess();
90+
91+
expect(mockInvalidate).toHaveBeenCalledTimes(2);
92+
expect(mockInvalidate).toHaveBeenCalledWith('p2p_advertiser_relations');
93+
expect(mockInvalidate).toHaveBeenCalledWith('p2p_advertiser_list');
94+
});
95+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { renderHook } from '@testing-library/react';
2+
import useAdvertiserRelations from '../useAdvertiserRelations';
3+
import useAdvertiserRelationsAddBlocked from '../useAdvertiserRelationsAddBlocked';
4+
5+
jest.mock('../useAdvertiserRelations', () => ({
6+
__esModule: true,
7+
default: jest.fn().mockReturnValue({
8+
blockedAdvertisers: [],
9+
data: undefined,
10+
favouriteAdvertisers: [],
11+
mutate: jest.fn(),
12+
mutation: {},
13+
}),
14+
}));
15+
16+
const mockUseAdvertiserRelations = useAdvertiserRelations as jest.Mock;
17+
18+
describe('useAdvertiserRelationsAddBlocked', () => {
19+
it('should call mutate with the correct arguments', () => {
20+
const { result } = renderHook(() => useAdvertiserRelationsAddBlocked());
21+
22+
result.current.mutate([1]);
23+
24+
expect(mockUseAdvertiserRelations().mutate).toHaveBeenCalledWith({
25+
add_blocked: [1],
26+
});
27+
});
28+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { renderHook } from '@testing-library/react';
2+
import useAdvertiserRelations from '../useAdvertiserRelations';
3+
import useAdvertiserRelationsRemoveBlocked from '../useAdvertiserRelationsRemoveBlocked';
4+
5+
jest.mock('../useAdvertiserRelations', () => ({
6+
__esModule: true,
7+
default: jest.fn().mockReturnValue({
8+
blockedAdvertisers: [],
9+
data: undefined,
10+
favouriteAdvertisers: [],
11+
mutate: jest.fn(),
12+
mutation: {},
13+
}),
14+
}));
15+
16+
const mockUseAdvertiserRelations = useAdvertiserRelations as jest.Mock;
17+
18+
describe('useAdvertiserRelationsRemoveBlocked', () => {
19+
it('should call mutate with the correct arguments', () => {
20+
const { result } = renderHook(() => useAdvertiserRelationsRemoveBlocked());
21+
22+
result.current.mutate([1]);
23+
24+
expect(mockUseAdvertiserRelations().mutate).toHaveBeenCalledWith({
25+
remove_blocked: [1],
26+
});
27+
});
28+
});

Diff for: src/hooks/api/counterparty/p2p-advertiser-relations/useAdvertiserRelations.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,27 @@ import useInvalidateQuery from '../../useInvalidateQuery';
44
/** This hook returns favourite and blocked advertisers and the mutation function to update the block list of the current user. */
55
const useAdvertiserRelations = () => {
66
const invalidate = useInvalidateQuery();
7-
const { data, mutate, ...mutate_rest } = useP2PAdvertiserRelations({
7+
const { data, mutate, ...mutateRest } = useP2PAdvertiserRelations({
88
onSuccess: () => {
99
invalidate('p2p_advertiser_relations');
1010
invalidate('p2p_advertiser_list');
1111
},
1212
});
1313

14-
const advertiser_relations = data;
14+
const advertiserRelations = data;
1515

1616
return {
1717
/** Blocked advertisers by the current user. */
18-
blocked_advertisers: advertiser_relations?.blocked_advertisers,
18+
blockedAdvertisers: advertiserRelations?.blocked_advertisers,
1919
/** P2P advertiser relations information. */
20-
data: advertiser_relations,
20+
data: advertiserRelations,
2121
/** Favourite advertisers of the current user. */
22-
favourite_advertisers: advertiser_relations?.favourite_advertisers,
22+
favouriteAdvertisers: advertiserRelations?.favourite_advertisers,
2323

2424
/** The mutation function to update (add/remove) the currrent user's block list. */
2525
mutate,
2626
/** The mutation related information. */
27-
mutation: mutate_rest,
27+
mutation: mutateRest,
2828
};
2929
};
3030

0 commit comments

Comments
 (0)