@amityco/ts-sdk 0.0.1-beta.37 → 0.0.1-beta.39
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/.eslintrc.json +3 -5
- package/dist/@types/core/events.d.ts +1 -0
- package/dist/@types/core/events.d.ts.map +1 -1
- package/dist/@types/core/model.d.ts +2 -0
- package/dist/@types/core/model.d.ts.map +1 -1
- package/dist/@types/domains/category.d.ts +7 -0
- package/dist/@types/domains/category.d.ts.map +1 -1
- package/dist/@types/domains/channel.d.ts +2 -2
- package/dist/@types/domains/channel.d.ts.map +1 -1
- package/dist/@types/domains/community.d.ts +12 -0
- package/dist/@types/domains/community.d.ts.map +1 -1
- package/dist/@types/domains/feed.d.ts +1 -2
- package/dist/@types/domains/feed.d.ts.map +1 -1
- package/dist/@types/domains/message.d.ts +1 -1
- package/dist/@types/domains/message.d.ts.map +1 -1
- package/dist/@types/domains/post.d.ts +1 -1
- package/dist/@types/domains/post.d.ts.map +1 -1
- package/dist/@types/domains/user.d.ts +8 -0
- package/dist/@types/domains/user.d.ts.map +1 -1
- package/dist/@types/global.d.ts +5 -0
- package/dist/@types/global.d.ts.map +1 -1
- package/dist/category/api/queryCategories.d.ts +1 -5
- package/dist/category/api/queryCategories.d.ts.map +1 -1
- package/dist/category/observers/index.d.ts +2 -0
- package/dist/category/observers/index.d.ts.map +1 -0
- package/dist/category/observers/liveCategories.d.ts +18 -0
- package/dist/category/observers/liveCategories.d.ts.map +1 -0
- package/dist/category/observers/tests/liveCategories.test.d.ts +2 -0
- package/dist/category/observers/tests/liveCategories.test.d.ts.map +1 -0
- package/dist/channel/api/tests/getChannels.test.d.ts +2 -0
- package/dist/channel/api/tests/getChannels.test.d.ts.map +1 -0
- package/dist/channel/api/tests/leaveChannel.test.d.ts +2 -0
- package/dist/channel/api/tests/leaveChannel.test.d.ts.map +1 -0
- package/dist/channel/observers/liveChannel.d.ts.map +1 -1
- package/dist/channel/observers/liveChannels.d.ts.map +1 -1
- package/dist/client/api/accessTokenExpiryWatcher.d.ts +4 -1
- package/dist/client/api/accessTokenExpiryWatcher.d.ts.map +1 -1
- package/dist/client/api/connectClient.d.ts.map +1 -1
- package/dist/client/api/getToken.d.ts +3 -1
- package/dist/client/api/getToken.d.ts.map +1 -1
- package/dist/client/utils/setClientToken.d.ts +3 -3
- package/dist/comment/api/deleteComment.d.ts.map +1 -1
- package/dist/comment/api/getComment.d.ts.map +1 -1
- package/dist/comment/observers/index.d.ts +1 -0
- package/dist/comment/observers/index.d.ts.map +1 -1
- package/dist/comment/observers/liveComment.d.ts +21 -0
- package/dist/comment/observers/liveComment.d.ts.map +1 -0
- package/dist/comment/observers/tests/liveComment.test.d.ts +2 -0
- package/dist/comment/observers/tests/liveComment.test.d.ts.map +1 -0
- package/dist/community/api/queryCommunities.d.ts +1 -10
- package/dist/community/api/queryCommunities.d.ts.map +1 -1
- package/dist/community/events/index.d.ts +1 -0
- package/dist/community/events/index.d.ts.map +1 -1
- package/dist/community/events/onCommunityUserChanged.d.ts +17 -0
- package/dist/community/events/onCommunityUserChanged.d.ts.map +1 -0
- package/dist/community/events/utils.d.ts +1 -0
- package/dist/community/events/utils.d.ts.map +1 -1
- package/dist/community/observers/index.d.ts +1 -0
- package/dist/community/observers/index.d.ts.map +1 -1
- package/dist/community/observers/liveCommunities.d.ts +20 -0
- package/dist/community/observers/liveCommunities.d.ts.map +1 -0
- package/dist/community/observers/tests/liveCommunities.test.d.ts +2 -0
- package/dist/community/observers/tests/liveCommunities.test.d.ts.map +1 -0
- package/dist/core/events.d.ts +3 -3
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/model/idResolvers.d.ts.map +1 -1
- package/dist/core/model/identifyModel.d.ts.map +1 -1
- package/dist/core/model/index.d.ts.map +1 -1
- package/dist/core/query/filtering.d.ts +10 -0
- package/dist/core/query/filtering.d.ts.map +1 -1
- package/dist/core/query/paging.d.ts +2 -2
- package/dist/core/query/paging.d.ts.map +1 -1
- package/dist/core/query/sorting.d.ts +6 -0
- package/dist/core/query/sorting.d.ts.map +1 -1
- package/dist/core/query/tests/paging.test.d.ts +2 -0
- package/dist/core/query/tests/paging.test.d.ts.map +1 -0
- package/dist/core/transports/http.d.ts +0 -5
- package/dist/core/transports/http.d.ts.map +1 -1
- package/dist/file/api/test/createImage.test.d.ts +2 -0
- package/dist/file/api/test/createImage.test.d.ts.map +1 -0
- package/dist/file/api/test/createVideo.test.d.ts +2 -0
- package/dist/file/api/test/createVideo.test.d.ts.map +1 -0
- package/dist/index.cjs.js +607 -252
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +599 -251
- package/dist/index.umd.js +4 -4
- package/dist/message/api/queryMessages.d.ts +2 -2
- package/dist/message/api/queryMessages.d.ts.map +1 -1
- package/dist/message/observers/liveMessage.d.ts.map +1 -1
- package/dist/post/observers/index.d.ts +1 -0
- package/dist/post/observers/index.d.ts.map +1 -1
- package/dist/post/observers/livePost.d.ts +21 -0
- package/dist/post/observers/livePost.d.ts.map +1 -0
- package/dist/post/observers/livePosts.d.ts +2 -2
- package/dist/post/observers/livePosts.d.ts.map +1 -1
- package/dist/post/observers/tests/livePost.test.d.ts +2 -0
- package/dist/post/observers/tests/livePost.test.d.ts.map +1 -0
- package/dist/report/api/createReport.d.ts.map +1 -1
- package/dist/report/api/deleteReport.d.ts.map +1 -1
- package/dist/report/api/tests/createReport.test.d.ts +2 -0
- package/dist/report/api/tests/createReport.test.d.ts.map +1 -0
- package/dist/report/api/tests/deleteReport.test.d.ts +2 -0
- package/dist/report/api/tests/deleteReport.test.d.ts.map +1 -0
- package/dist/subChannel/api/tests/deleteSubChannel.test.d.ts +2 -0
- package/dist/subChannel/api/tests/deleteSubChannel.test.d.ts.map +1 -0
- package/dist/subChannel/api/tests/getSubChannel.test.d.ts +2 -0
- package/dist/subChannel/api/tests/getSubChannel.test.d.ts.map +1 -0
- package/dist/subChannel/api/tests/getSubChannels.test.d.ts +2 -0
- package/dist/subChannel/api/tests/getSubChannels.test.d.ts.map +1 -0
- package/dist/subChannel/api/tests/updateSubChannel.test.d.ts +2 -0
- package/dist/subChannel/api/tests/updateSubChannel.test.d.ts.map +1 -0
- package/dist/subChannel/observers/liveSubChannel.d.ts.map +1 -1
- package/dist/user/api/queryUsers.d.ts +1 -6
- package/dist/user/api/queryUsers.d.ts.map +1 -1
- package/dist/user/api/tests/updateUser.test.d.ts +2 -0
- package/dist/user/api/tests/updateUser.test.d.ts.map +1 -0
- package/dist/user/observers/index.d.ts +1 -0
- package/dist/user/observers/index.d.ts.map +1 -1
- package/dist/user/observers/liveUser.d.ts.map +1 -1
- package/dist/user/observers/liveUsers.d.ts +18 -0
- package/dist/user/observers/liveUsers.d.ts.map +1 -0
- package/dist/user/observers/tests/liveUsers.test.d.ts +2 -0
- package/dist/user/observers/tests/liveUsers.test.d.ts.map +1 -0
- package/dist/utils/liveObject.d.ts +2 -0
- package/dist/utils/liveObject.d.ts.map +1 -0
- package/dist/utils/tests/dummy/category.d.ts +64 -0
- package/dist/utils/tests/dummy/category.d.ts.map +1 -0
- package/dist/utils/tests/dummy/channel.d.ts +50 -0
- package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
- package/dist/utils/tests/dummy/community.d.ts +132 -0
- package/dist/utils/tests/dummy/community.d.ts.map +1 -1
- package/dist/utils/tests/dummy/feed.d.ts +21 -0
- package/dist/utils/tests/dummy/feed.d.ts.map +1 -0
- package/dist/utils/tests/dummy/file.d.ts +3 -0
- package/dist/utils/tests/dummy/file.d.ts.map +1 -1
- package/dist/utils/tests/dummy/index.d.ts +2 -0
- package/dist/utils/tests/dummy/index.d.ts.map +1 -1
- package/dist/utils/tests/dummy/post.d.ts +11 -0
- package/dist/utils/tests/dummy/post.d.ts.map +1 -1
- package/dist/utils/tests/dummy/subChannel.d.ts +0 -20
- package/dist/utils/tests/dummy/subChannel.d.ts.map +1 -1
- package/dist/utils/tests/dummy/user.d.ts +81 -0
- package/dist/utils/tests/dummy/user.d.ts.map +1 -1
- package/dist/utils/tests/liveObject.test.d.ts +2 -0
- package/dist/utils/tests/liveObject.test.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/@types/core/events.ts +1 -0
- package/src/@types/core/model.ts +4 -0
- package/src/@types/domains/category.ts +13 -0
- package/src/@types/domains/channel.ts +2 -2
- package/src/@types/domains/community.ts +25 -0
- package/src/@types/domains/feed.ts +1 -3
- package/src/@types/domains/message.ts +4 -1
- package/src/@types/domains/post.ts +1 -1
- package/src/@types/domains/user.ts +14 -0
- package/src/@types/global.ts +5 -0
- package/src/cache/api/tests/ingestInCache.test.ts +2 -0
- package/src/category/api/queryCategories.ts +3 -5
- package/src/category/observers/index.ts +1 -0
- package/src/category/observers/liveCategories.ts +141 -0
- package/src/category/observers/tests/liveCategories.test.ts +147 -0
- package/src/channel/api/tests/createChannel.test.ts +30 -6
- package/src/channel/api/tests/getChannel.test.ts +3 -1
- package/src/channel/api/tests/getChannels.test.ts +97 -0
- package/src/channel/api/tests/joinChannel.test.ts +62 -3
- package/src/channel/api/tests/leaveChannel.test.ts +90 -0
- package/src/channel/api/tests/queryChannels.test.ts +38 -1
- package/src/channel/observers/liveChannel.ts +8 -80
- package/src/channel/observers/liveChannels.ts +29 -24
- package/src/client/api/accessTokenExpiryWatcher.ts +7 -5
- package/src/client/api/connectClient.ts +0 -2
- package/src/client/api/tests/accessTokenExpiryWatcher.test.ts +8 -5
- package/src/comment/api/deleteComment.ts +5 -5
- package/src/comment/api/getComment.ts +8 -3
- package/src/comment/observers/index.ts +1 -0
- package/src/comment/observers/liveComment.ts +43 -0
- package/src/comment/observers/tests/liveComment.test.ts +95 -0
- package/src/community/api/queryCommunities.ts +3 -10
- package/src/community/api/test/addCommunityMember.test.ts +14 -2
- package/src/community/api/test/joinCommunity.test.ts +14 -2
- package/src/community/api/test/leaveCommunity.test.ts +11 -1
- package/src/community/api/test/removeCommunityMembers.test.ts +11 -1
- package/src/community/events/index.ts +1 -0
- package/src/community/events/onCommunityUserChanged.ts +20 -0
- package/src/community/events/test/onCommunityJoined.test.ts +1 -1
- package/src/community/events/test/onCommunityUserAdded.test.ts +1 -1
- package/src/community/events/test/onCommunityUserBanned.test.ts +1 -1
- package/src/community/events/test/onCommunityUserUnbaned.test.ts +1 -1
- package/src/community/events/test/utils.test.ts +52 -3
- package/src/community/events/utils.ts +49 -0
- package/src/community/observers/index.ts +1 -0
- package/src/community/observers/liveCommunities.ts +188 -0
- package/src/community/observers/tests/liveCommunities.test.ts +284 -0
- package/src/core/model/idResolvers.ts +2 -0
- package/src/core/model/identifyModel.ts +1 -0
- package/src/core/model/index.ts +2 -0
- package/src/core/query/filtering.ts +33 -3
- package/src/core/query/paging.ts +5 -4
- package/src/core/query/sorting.ts +8 -0
- package/src/core/query/tests/paging.test.ts +66 -0
- package/src/core/transports/http.ts +17 -13
- package/src/core/transports/test/http.test.ts +49 -60
- package/src/file/api/createFile.ts +1 -1
- package/src/file/api/createImage.ts +1 -1
- package/src/file/api/createVideo.ts +1 -1
- package/src/file/api/test/createImage.test.ts +69 -0
- package/src/file/api/test/createVideo.test.ts +81 -0
- package/src/index.ts +1 -0
- package/src/message/api/queryMessages.ts +7 -7
- package/src/message/api/tests/queryMessages.test.ts +6 -6
- package/src/message/observers/liveMessage.ts +11 -83
- package/src/message/tests/observers/liveMessage.test.ts +1 -143
- package/src/message/tests/observers/liveMessages.test.ts +4 -4
- package/src/post/observers/index.ts +1 -0
- package/src/post/observers/livePost.ts +47 -0
- package/src/post/observers/livePosts.ts +14 -22
- package/src/post/observers/tests/livePost.test.ts +97 -0
- package/src/post/observers/tests/livePosts.test.ts +65 -8
- package/src/report/api/createReport.ts +1 -6
- package/src/report/api/deleteReport.ts +2 -6
- package/src/report/api/tests/createReport.test.ts +93 -0
- package/src/report/api/tests/deleteReport.test.ts +93 -0
- package/src/stream/api/tests/createStream.test.ts +3 -11
- package/src/stream/api/tests/deleteStream.test.ts +5 -3
- package/src/subChannel/api/tests/createSubChannel.test.ts +21 -14
- package/src/subChannel/api/tests/deleteSubChannel.test.ts +112 -0
- package/src/subChannel/api/tests/getSubChannel.test.ts +97 -0
- package/src/subChannel/api/tests/getSubChannels.test.ts +97 -0
- package/src/subChannel/api/tests/updateSubChannel.test.ts +86 -0
- package/src/subChannel/observers/liveSubChannel.ts +6 -56
- package/src/subChannel/observers/tests/liveSubChannel.test.ts +0 -82
- package/src/user/api/queryUsers.ts +1 -6
- package/src/user/api/tests/updateUser.test.ts +60 -0
- package/src/user/observers/index.ts +1 -0
- package/src/user/observers/liveUser.ts +9 -61
- package/src/user/observers/liveUsers.ts +162 -0
- package/src/user/observers/tests/liveUsers.test.ts +202 -0
- package/src/user/tests/observers/liveUser.test.ts +1 -154
- package/src/utils/liveObject.ts +86 -0
- package/src/utils/tests/dummy/category.ts +57 -0
- package/src/utils/tests/dummy/channel.ts +52 -1
- package/src/utils/tests/dummy/community.ts +94 -0
- package/src/utils/tests/dummy/feed.ts +13 -0
- package/src/utils/tests/dummy/file.ts +32 -0
- package/src/utils/tests/dummy/index.ts +3 -0
- package/src/utils/tests/dummy/post.ts +62 -47
- package/src/utils/tests/dummy/stream.ts +73 -73
- package/src/utils/tests/dummy/subChannel.ts +0 -22
- package/src/utils/tests/dummy/user.ts +57 -0
- package/src/utils/tests/liveObject.test.ts +172 -0
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { ASCApiError } from '~/core/errors';
|
|
2
2
|
import { disableCache, enableCache } from '~/cache/api';
|
|
3
|
-
import {
|
|
4
|
-
LIVE_OBJECT_ENABLE_CACHE_MESSAGE,
|
|
5
|
-
UNSYNCED_OBJECT_CACHED_AT_MESSAGE,
|
|
6
|
-
} from '~/utils/constants';
|
|
3
|
+
import { UNSYNCED_OBJECT_CACHED_AT_MESSAGE } from '~/utils/constants';
|
|
7
4
|
import { pause, client, connectClient, disconnectClient, generateRawMessage } from '~/utils/tests';
|
|
8
5
|
import { getFutureDate } from '~/core/model';
|
|
9
6
|
import { convertFromRaw } from '../../utils';
|
|
@@ -37,145 +34,6 @@ describe('liveMessage', () => {
|
|
|
37
34
|
|
|
38
35
|
afterEach(disableCache);
|
|
39
36
|
|
|
40
|
-
test('it should show message if cache not enabled', () => {
|
|
41
|
-
/*
|
|
42
|
-
* NOTE: at the time of writing this test cache is diabled by default, but
|
|
43
|
-
* there is a proposal to enable cache by default. So I'm disabling cache
|
|
44
|
-
* here to ensure cache is disabled
|
|
45
|
-
*/
|
|
46
|
-
disableCache();
|
|
47
|
-
|
|
48
|
-
const callback = jest.fn();
|
|
49
|
-
jest.spyOn(global.console, 'log');
|
|
50
|
-
client.http.get = jest.fn();
|
|
51
|
-
|
|
52
|
-
// call liveMessage check if mocked console get's called with the correct
|
|
53
|
-
// message
|
|
54
|
-
client.use();
|
|
55
|
-
liveMessage(message.messageId, callback);
|
|
56
|
-
|
|
57
|
-
expect(console.log).toBeCalledWith(LIVE_OBJECT_ENABLE_CACHE_MESSAGE);
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
test('it should return message live object', async () => {
|
|
61
|
-
const snapshot = getSnapshot();
|
|
62
|
-
|
|
63
|
-
// mock response of queryMessages and validate
|
|
64
|
-
const callback = jest.fn();
|
|
65
|
-
client.http.get = jest.fn().mockResolvedValue(messageQueryResponseRaw);
|
|
66
|
-
|
|
67
|
-
liveMessage(message.messageId, callback);
|
|
68
|
-
|
|
69
|
-
expect(callback).toHaveBeenCalledTimes(1);
|
|
70
|
-
|
|
71
|
-
// check if cache data returned (should be empty)
|
|
72
|
-
expect(callback).toHaveBeenCalledWith(expect.objectContaining(snapshot));
|
|
73
|
-
|
|
74
|
-
await pause();
|
|
75
|
-
|
|
76
|
-
expect(callback).toHaveBeenCalledTimes(2);
|
|
77
|
-
|
|
78
|
-
snapshot.loading = false;
|
|
79
|
-
snapshot.data = message;
|
|
80
|
-
|
|
81
|
-
expect(callback).toHaveBeenCalledWith(expect.objectContaining(snapshot));
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
test('it should return error on api failure', async () => {
|
|
85
|
-
const snapshot = getSnapshot();
|
|
86
|
-
const error = new ASCApiError(
|
|
87
|
-
'server error!',
|
|
88
|
-
Amity.ServerError.ITEM_NOT_FOUND,
|
|
89
|
-
Amity.ErrorLevel.ERROR,
|
|
90
|
-
);
|
|
91
|
-
|
|
92
|
-
// mock response of queryMessages and validate
|
|
93
|
-
const callback = jest.fn();
|
|
94
|
-
client.http.get = jest.fn().mockRejectedValue(error);
|
|
95
|
-
|
|
96
|
-
liveMessage(message.messageId, callback);
|
|
97
|
-
|
|
98
|
-
expect(callback).toHaveBeenCalledTimes(1);
|
|
99
|
-
|
|
100
|
-
// check if cache data returned (should be empty)
|
|
101
|
-
expect(callback).toHaveBeenCalledWith(expect.objectContaining(snapshot));
|
|
102
|
-
|
|
103
|
-
await pause();
|
|
104
|
-
|
|
105
|
-
expect(callback).toHaveBeenCalledTimes(2);
|
|
106
|
-
|
|
107
|
-
snapshot.error = error;
|
|
108
|
-
snapshot.loading = false;
|
|
109
|
-
expect(callback).toHaveBeenLastCalledWith(expect.objectContaining(snapshot));
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
test('it should terminate updates on api failure', async () => {
|
|
113
|
-
const snapshot = getSnapshot();
|
|
114
|
-
const error = new ASCApiError(
|
|
115
|
-
'server error!',
|
|
116
|
-
Amity.ServerError.ITEM_NOT_FOUND,
|
|
117
|
-
Amity.ErrorLevel.ERROR,
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
// mock response of queryMessages and validate
|
|
121
|
-
const callback = jest.fn();
|
|
122
|
-
client.http.get = jest.fn().mockRejectedValue(error);
|
|
123
|
-
|
|
124
|
-
liveMessage(message.messageId, callback);
|
|
125
|
-
|
|
126
|
-
expect(callback).toHaveBeenCalledTimes(1);
|
|
127
|
-
|
|
128
|
-
// check if cache data returned (should be empty)
|
|
129
|
-
expect(callback).toHaveBeenCalledWith(expect.objectContaining(snapshot));
|
|
130
|
-
|
|
131
|
-
await pause();
|
|
132
|
-
|
|
133
|
-
expect(callback).toHaveBeenCalledTimes(2);
|
|
134
|
-
|
|
135
|
-
snapshot.error = error;
|
|
136
|
-
snapshot.loading = false;
|
|
137
|
-
expect(callback).toHaveBeenLastCalledWith(expect.objectContaining(snapshot));
|
|
138
|
-
|
|
139
|
-
const rawUpdatedMessage = { ...rawMessage, updatedAt: getFutureDate(rawMessage.updatedAt) };
|
|
140
|
-
const updatedMessage = convertFromRaw(rawUpdatedMessage);
|
|
141
|
-
client.emitter.emit('message.updated', { messages: [rawUpdatedMessage] });
|
|
142
|
-
|
|
143
|
-
delete snapshot.error;
|
|
144
|
-
snapshot.loading = false;
|
|
145
|
-
snapshot.data = updatedMessage;
|
|
146
|
-
expect(callback).not.toHaveBeenNthCalledWith(3, expect.objectContaining(snapshot));
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
test('it should not return updates on obtain once!', async () => {
|
|
150
|
-
const snapshot = getSnapshot();
|
|
151
|
-
|
|
152
|
-
// mock response of queryMessages and validate
|
|
153
|
-
const callback = jest.fn();
|
|
154
|
-
client.http.get = jest.fn().mockResolvedValue(messageQueryResponseRaw);
|
|
155
|
-
|
|
156
|
-
const unsub = liveMessage(message.messageId, callback);
|
|
157
|
-
|
|
158
|
-
expect(callback).toHaveBeenCalledTimes(1);
|
|
159
|
-
|
|
160
|
-
// check if cache data returned (should be empty)
|
|
161
|
-
expect(callback).toHaveBeenCalledWith(expect.objectContaining(snapshot));
|
|
162
|
-
|
|
163
|
-
await pause();
|
|
164
|
-
|
|
165
|
-
expect(callback).toHaveBeenCalledTimes(2);
|
|
166
|
-
|
|
167
|
-
unsub();
|
|
168
|
-
|
|
169
|
-
const rawUpdatedMessage = { ...rawMessage, updatedAt: getFutureDate(rawMessage.updatedAt) };
|
|
170
|
-
const updatedMessage = convertFromRaw(rawUpdatedMessage);
|
|
171
|
-
client.emitter.emit('message.updated', { messages: [rawUpdatedMessage] });
|
|
172
|
-
|
|
173
|
-
delete snapshot.error;
|
|
174
|
-
snapshot.loading = false;
|
|
175
|
-
snapshot.data = updatedMessage;
|
|
176
|
-
expect(callback).not.toHaveBeenNthCalledWith(3, expect.objectContaining(snapshot));
|
|
177
|
-
});
|
|
178
|
-
|
|
179
37
|
const events: [string, keyof Amity.Events][] = [
|
|
180
38
|
['it should return updated message on onFetch', 'local.message.fetched'],
|
|
181
39
|
['it should return updated message on onUpdate', 'message.updated'],
|
|
@@ -182,8 +182,8 @@ describe('liveMessages', () => {
|
|
|
182
182
|
data: {
|
|
183
183
|
messages: returnValue,
|
|
184
184
|
paging: {
|
|
185
|
-
previous: '
|
|
186
|
-
next: '
|
|
185
|
+
previous: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
|
|
186
|
+
next: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
|
|
187
187
|
},
|
|
188
188
|
},
|
|
189
189
|
})
|
|
@@ -191,8 +191,8 @@ describe('liveMessages', () => {
|
|
|
191
191
|
data: {
|
|
192
192
|
messages: returnValue2,
|
|
193
193
|
paging: {
|
|
194
|
-
previous: '
|
|
195
|
-
next: '
|
|
194
|
+
previous: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
|
|
195
|
+
next: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
|
|
196
196
|
},
|
|
197
197
|
},
|
|
198
198
|
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { liveObject } from '~/utils/liveObject';
|
|
2
|
+
import { getPost } from '../api';
|
|
3
|
+
import {
|
|
4
|
+
onPostApproved,
|
|
5
|
+
onPostDeclined,
|
|
6
|
+
onPostDeleted,
|
|
7
|
+
onPostFlagged,
|
|
8
|
+
onPostReactionAdded,
|
|
9
|
+
onPostReactionRemoved,
|
|
10
|
+
onPostUnflagged,
|
|
11
|
+
onPostUpdated,
|
|
12
|
+
} from '../events';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* ```js
|
|
16
|
+
* import { livePost } from '@amityco/ts-sdk';
|
|
17
|
+
*
|
|
18
|
+
* let post;
|
|
19
|
+
*
|
|
20
|
+
* const unsubscribe = livePost(postId, response => {
|
|
21
|
+
* post = response.data;
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Observe all mutation on a given {@link Amity.Post}
|
|
26
|
+
*
|
|
27
|
+
* @param postId the ID of the message to observe
|
|
28
|
+
* @param callback the function to call when new data are available
|
|
29
|
+
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the sub channel
|
|
30
|
+
*
|
|
31
|
+
* @category Post Live Object
|
|
32
|
+
*/
|
|
33
|
+
export const livePost = (
|
|
34
|
+
postId: Amity.Post['postId'],
|
|
35
|
+
callback: Amity.LiveObjectCallback<Amity.Post>,
|
|
36
|
+
): Amity.Unsubscriber => {
|
|
37
|
+
return liveObject(postId, callback, 'postId', getPost, [
|
|
38
|
+
onPostApproved,
|
|
39
|
+
onPostDeclined,
|
|
40
|
+
onPostDeleted,
|
|
41
|
+
onPostFlagged,
|
|
42
|
+
onPostReactionAdded,
|
|
43
|
+
onPostReactionRemoved,
|
|
44
|
+
onPostUnflagged,
|
|
45
|
+
onPostUpdated,
|
|
46
|
+
]);
|
|
47
|
+
};
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
runQuery,
|
|
8
8
|
queryOptions,
|
|
9
9
|
filterByPropEquality,
|
|
10
|
+
filterByFeedType,
|
|
10
11
|
sortByFirstCreated,
|
|
11
12
|
sortByLastCreated,
|
|
12
13
|
} from '~/core/query';
|
|
@@ -43,8 +44,8 @@ import { queryPosts } from '../api';
|
|
|
43
44
|
*
|
|
44
45
|
* Observe all mutations on a list of {@link Amity.Post} for a given target object
|
|
45
46
|
*
|
|
46
|
-
* @param targetType the type of the target
|
|
47
|
-
* @param targetId the ID of the target
|
|
47
|
+
* @param param.targetType the type of the target
|
|
48
|
+
* @param param.targetId the ID of the target
|
|
48
49
|
* @param callback the function to call when new data are available
|
|
49
50
|
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
|
|
50
51
|
*
|
|
@@ -86,13 +87,16 @@ export const livePosts = (
|
|
|
86
87
|
posts = filterByPropEquality(posts, 'isDeleted', params.isDeleted);
|
|
87
88
|
|
|
88
89
|
const sortBy = params.sortBy ? params.sortBy : 'lastCreated';
|
|
89
|
-
|
|
90
90
|
posts = posts.sort(sortBy === 'lastCreated' ? sortByLastCreated : sortByFirstCreated);
|
|
91
91
|
|
|
92
92
|
if (params.tags) {
|
|
93
93
|
posts = posts.filter(p => p.tags?.some(t => params.tags?.includes(t)));
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
if (params.targetType === 'community' && params.feedType) {
|
|
97
|
+
posts = filterByFeedType(posts, params.feedType);
|
|
98
|
+
}
|
|
99
|
+
|
|
96
100
|
callback({
|
|
97
101
|
onNextPage: onFetch,
|
|
98
102
|
data: posts,
|
|
@@ -108,27 +112,15 @@ export const livePosts = (
|
|
|
108
112
|
if (params.targetId !== post.targetId || params.targetType !== post.targetType || !collection)
|
|
109
113
|
return;
|
|
110
114
|
|
|
111
|
-
if (['onCreate', 'onApproved'].includes(action)) {
|
|
112
|
-
collection.data = [...new Set([post.postId, ...collection.data])];
|
|
113
|
-
} else if (['onDelete', 'onDeclined'].includes(action)) {
|
|
114
|
-
collection.data = collection.data.filter(p => p !== post.postId);
|
|
115
|
-
|
|
116
|
-
/*
|
|
117
|
-
* if isDeleted is true, collection should add deleted items to the
|
|
118
|
-
* begining of the collection
|
|
119
|
-
*/
|
|
120
|
-
if (params.isDeleted) collection.data.unshift(post.postId);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
115
|
/*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
* The responder should pull the feed from cache once available and should
|
|
127
|
-
* match the collection to feedType param
|
|
128
|
-
* https://ekoapp.atlassian.net/browse/ASC-9382
|
|
116
|
+
* This is not ideal, but currently this is the only way to update the
|
|
117
|
+
* collection on post declined
|
|
129
118
|
*/
|
|
130
|
-
if (
|
|
131
|
-
collection.data = collection.data.filter(
|
|
119
|
+
if (action === 'onDeclined') {
|
|
120
|
+
collection.data = collection.data.filter(postId => postId !== post.postId);
|
|
121
|
+
} else {
|
|
122
|
+
collection.data = [...new Set([post.postId, ...collection.data])];
|
|
123
|
+
}
|
|
132
124
|
|
|
133
125
|
pushToCache(cacheKey, collection);
|
|
134
126
|
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { disableCache, enableCache } from '~/cache/api';
|
|
2
|
+
import {
|
|
3
|
+
pause,
|
|
4
|
+
client,
|
|
5
|
+
connectClient,
|
|
6
|
+
disconnectClient,
|
|
7
|
+
generatePost,
|
|
8
|
+
user12,
|
|
9
|
+
} from '~/utils/tests';
|
|
10
|
+
import { getFutureDate } from '~/core/model';
|
|
11
|
+
import { livePost } from '../livePost';
|
|
12
|
+
|
|
13
|
+
describe('livePost', () => {
|
|
14
|
+
const post = generatePost();
|
|
15
|
+
const response = { data: { posts: [post] } };
|
|
16
|
+
|
|
17
|
+
beforeAll(async () => {
|
|
18
|
+
await connectClient();
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
afterAll(async () => {
|
|
22
|
+
await disconnectClient();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
beforeEach(enableCache);
|
|
26
|
+
|
|
27
|
+
afterEach(disableCache);
|
|
28
|
+
|
|
29
|
+
const events: [string, keyof Amity.MqttPostEvents][] = [
|
|
30
|
+
['should get update on post.updated event', 'post.updated'],
|
|
31
|
+
['should get update on post.deleted event', 'post.deleted'],
|
|
32
|
+
['should get update on post.approved event', 'post.approved'],
|
|
33
|
+
['should get update on post.declined event', 'post.declined'],
|
|
34
|
+
['should get update on post.flagged event', 'post.flagged'],
|
|
35
|
+
['should get update on post.unflagged event', 'post.unflagged'],
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
test.each(events)('%s', async (test, event) => {
|
|
39
|
+
const update = {
|
|
40
|
+
...post,
|
|
41
|
+
data: { text: 'new-text' },
|
|
42
|
+
updatedAt: getFutureDate(post.updatedAt),
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const callback = jest.fn();
|
|
46
|
+
client.http.get = jest.fn().mockResolvedValue(response);
|
|
47
|
+
|
|
48
|
+
livePost(post.postId, callback);
|
|
49
|
+
await pause();
|
|
50
|
+
client.emitter.emit(event, { posts: [update] });
|
|
51
|
+
await pause();
|
|
52
|
+
|
|
53
|
+
expect(callback).toHaveBeenCalledTimes(3);
|
|
54
|
+
expect(callback).toHaveBeenNthCalledWith(
|
|
55
|
+
3,
|
|
56
|
+
expect.objectContaining({
|
|
57
|
+
data: update,
|
|
58
|
+
loading: false,
|
|
59
|
+
}),
|
|
60
|
+
);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
test.each([
|
|
64
|
+
['should get update on post.addReaction event', 'post.addReaction'],
|
|
65
|
+
['should get update on post.removeReaction event', 'post.removeReaction'],
|
|
66
|
+
] as [string, keyof Amity.MqttPostEvents][])('%s', async (test, event) => {
|
|
67
|
+
const update = {
|
|
68
|
+
...post,
|
|
69
|
+
data: { text: 'new-text' },
|
|
70
|
+
updatedAt: getFutureDate(post.updatedAt),
|
|
71
|
+
};
|
|
72
|
+
const reactor: Amity.Reaction = {
|
|
73
|
+
createdAt: getFutureDate(post.updatedAt),
|
|
74
|
+
reactionId: 'like',
|
|
75
|
+
reactionName: 'like',
|
|
76
|
+
referenceId: post.postId,
|
|
77
|
+
referenceType: 'post',
|
|
78
|
+
userId: user12.userId,
|
|
79
|
+
};
|
|
80
|
+
const callback = jest.fn();
|
|
81
|
+
client.http.get = jest.fn().mockResolvedValue(response);
|
|
82
|
+
|
|
83
|
+
livePost(post.postId, callback);
|
|
84
|
+
await pause();
|
|
85
|
+
client.emitter.emit(event, { posts: [update], reactor });
|
|
86
|
+
await pause();
|
|
87
|
+
|
|
88
|
+
expect(callback).toHaveBeenCalledTimes(3);
|
|
89
|
+
expect(callback).toHaveBeenNthCalledWith(
|
|
90
|
+
3,
|
|
91
|
+
expect.objectContaining({
|
|
92
|
+
data: update,
|
|
93
|
+
loading: false,
|
|
94
|
+
}),
|
|
95
|
+
);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
connectClient,
|
|
7
7
|
disconnectClient,
|
|
8
8
|
post11,
|
|
9
|
+
post14,
|
|
9
10
|
postQueryResponse,
|
|
10
11
|
postQueryResponsePage2,
|
|
11
12
|
} from '~/utils/tests';
|
|
@@ -133,23 +134,30 @@ describe('livePosts', () => {
|
|
|
133
134
|
expect(callback).toHaveBeenNthCalledWith(4, expect.objectContaining(snapshot));
|
|
134
135
|
});
|
|
135
136
|
|
|
136
|
-
const events: [string, keyof Amity.Events, Amity.Post][] = [
|
|
137
|
+
const events: [string, keyof Amity.Events, Amity.Post, Amity.PostLiveCollection][] = [
|
|
137
138
|
[
|
|
138
139
|
'it should add new post to collection onCreate',
|
|
139
140
|
'post.created',
|
|
140
141
|
{ ...post11, postId: 'new-post-id' },
|
|
142
|
+
params,
|
|
141
143
|
],
|
|
142
|
-
['it should edit post in collection onUpdate', 'post.updated', post11],
|
|
144
|
+
['it should edit post in collection onUpdate', 'post.updated', post11, params],
|
|
143
145
|
[
|
|
144
146
|
'it should update post in collection onApproved',
|
|
145
147
|
'post.approved',
|
|
146
148
|
{ ...post11, postId: 'approved-post-id' },
|
|
149
|
+
params,
|
|
147
150
|
],
|
|
148
|
-
[
|
|
149
|
-
|
|
151
|
+
[
|
|
152
|
+
'it should remove post in collection onDelete',
|
|
153
|
+
'post.deleted',
|
|
154
|
+
{ ...post11, isDeleted: true },
|
|
155
|
+
{ ...params, isDeleted: false },
|
|
156
|
+
],
|
|
157
|
+
['it should remove post in collection onDeclined', 'post.declined', post11, params],
|
|
150
158
|
];
|
|
151
159
|
|
|
152
|
-
test.each(events)('%s', async (test, event, post) => {
|
|
160
|
+
test.each(events)('%s', async (test, event, post, params) => {
|
|
153
161
|
const snapshot = getSnapshot();
|
|
154
162
|
|
|
155
163
|
const callback = jest.fn();
|
|
@@ -165,7 +173,7 @@ describe('livePosts', () => {
|
|
|
165
173
|
});
|
|
166
174
|
|
|
167
175
|
const payload = postQueryResponse.data;
|
|
168
|
-
const deletePayload = payload.posts.filter(
|
|
176
|
+
const deletePayload = payload.posts.filter(p => p.postId !== post.postId);
|
|
169
177
|
|
|
170
178
|
snapshot.loading = false;
|
|
171
179
|
// get data based on event
|
|
@@ -277,11 +285,51 @@ describe('livePosts', () => {
|
|
|
277
285
|
});
|
|
278
286
|
|
|
279
287
|
test('it should remove approved post when feedtype reviewing', async () => {
|
|
280
|
-
const
|
|
288
|
+
const feedId = 'publishedFeed';
|
|
289
|
+
const approvedPost = { ...post14, feedId };
|
|
290
|
+
|
|
291
|
+
const callback = jest.fn();
|
|
292
|
+
client.http.get = jest.fn().mockResolvedValue(postQueryResponsePage2);
|
|
293
|
+
|
|
294
|
+
livePosts({ ...params, targetType: 'community', feedType: 'reviewing' }, callback);
|
|
295
|
+
|
|
296
|
+
await pause();
|
|
297
|
+
const payload = postQueryResponsePage2.data.posts;
|
|
298
|
+
const snapshot = getSnapshot();
|
|
299
|
+
|
|
300
|
+
snapshot.data = payload;
|
|
301
|
+
snapshot.loading = false;
|
|
302
|
+
|
|
303
|
+
expect(callback).toHaveBeenNthCalledWith(2, expect.objectContaining(snapshot));
|
|
304
|
+
|
|
305
|
+
client.emitter.emit('post.approved', {
|
|
306
|
+
posts: [approvedPost],
|
|
307
|
+
feeds: [
|
|
308
|
+
{
|
|
309
|
+
...postQueryResponsePage2.data.feeds[0],
|
|
310
|
+
targetType: 'community',
|
|
311
|
+
feedId,
|
|
312
|
+
feedType: 'published',
|
|
313
|
+
},
|
|
314
|
+
],
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
snapshot.data = payload.filter(({ postId }) => postId !== approvedPost.postId);
|
|
318
|
+
|
|
319
|
+
expect(callback).toHaveBeenNthCalledWith(3, expect.objectContaining(snapshot));
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
test('it should remove reviewing post when feedtype published', async () => {
|
|
323
|
+
const feedId = 'publishedFeed';
|
|
324
|
+
const approvedPost = { ...post14, feedId };
|
|
325
|
+
|
|
326
|
+
const approvedFeed = { ...postQueryResponsePage2.data.feeds[0], feedType: 'published' };
|
|
327
|
+
postQueryResponsePage2.data.feeds = [approvedFeed];
|
|
328
|
+
|
|
281
329
|
const callback = jest.fn();
|
|
282
330
|
client.http.get = jest.fn().mockResolvedValue(postQueryResponsePage2);
|
|
283
331
|
|
|
284
|
-
livePosts({ ...params, feedType: '
|
|
332
|
+
livePosts({ ...params, targetType: 'community', feedType: 'published' }, callback);
|
|
285
333
|
|
|
286
334
|
await pause();
|
|
287
335
|
const payload = postQueryResponsePage2.data.posts;
|
|
@@ -294,9 +342,18 @@ describe('livePosts', () => {
|
|
|
294
342
|
|
|
295
343
|
client.emitter.emit('post.approved', {
|
|
296
344
|
posts: [approvedPost],
|
|
345
|
+
feeds: [
|
|
346
|
+
{
|
|
347
|
+
...postQueryResponsePage2.data.feeds[0],
|
|
348
|
+
targetType: 'community',
|
|
349
|
+
feedId,
|
|
350
|
+
feedType: 'reviewing',
|
|
351
|
+
},
|
|
352
|
+
],
|
|
297
353
|
});
|
|
298
354
|
|
|
299
355
|
snapshot.data = payload.filter(({ postId }) => postId !== approvedPost.postId);
|
|
356
|
+
|
|
300
357
|
expect(callback).toHaveBeenNthCalledWith(3, expect.objectContaining(snapshot));
|
|
301
358
|
});
|
|
302
359
|
});
|
|
@@ -49,12 +49,7 @@ export const createReport = async (
|
|
|
49
49
|
referenceType === 'message' ? prepareMessagePayload(data as Amity.RawMessagePayload) : data,
|
|
50
50
|
);
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
fireEvent('message.flagged', data as Amity.RawMessagePayload);
|
|
54
|
-
} else {
|
|
55
|
-
// @ts-ignore
|
|
56
|
-
fireEvent(`${referenceType}.flagged`, data);
|
|
57
|
-
}
|
|
52
|
+
fireEvent(`${referenceType}.flagged`, data);
|
|
58
53
|
|
|
59
54
|
return !!data;
|
|
60
55
|
};
|
|
@@ -49,12 +49,8 @@ export const deleteReport = async (
|
|
|
49
49
|
referenceType === 'message' ? prepareMessagePayload(data as Amity.RawMessagePayload) : data,
|
|
50
50
|
);
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
} else {
|
|
55
|
-
// @ts-ignore
|
|
56
|
-
fireEvent(`${referenceType}.unflagged`, data);
|
|
57
|
-
}
|
|
52
|
+
// @ts-ignore
|
|
53
|
+
fireEvent(`${referenceType}.unflagged`, data);
|
|
58
54
|
|
|
59
55
|
return !!data;
|
|
60
56
|
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { disableCache, enableCache, pullFromCache } from '~/cache/api';
|
|
2
|
+
import {
|
|
3
|
+
client,
|
|
4
|
+
connectClient,
|
|
5
|
+
disconnectClient,
|
|
6
|
+
flaggedUser,
|
|
7
|
+
flaggedUserQueryResponse,
|
|
8
|
+
} from '~/utils/tests';
|
|
9
|
+
import { ASCApiError } from '~/core/errors';
|
|
10
|
+
|
|
11
|
+
import { onUserFlagged } from '~/user/events';
|
|
12
|
+
|
|
13
|
+
import { createReport } from '..';
|
|
14
|
+
import REFERENCE_TYPES from '../../constants/referenceTypes';
|
|
15
|
+
|
|
16
|
+
describe('createReport', () => {
|
|
17
|
+
beforeAll(connectClient);
|
|
18
|
+
afterAll(disconnectClient);
|
|
19
|
+
|
|
20
|
+
// integration_test_id: ca4a760f-4342-4a99-9f3c-6c17cd205ca6
|
|
21
|
+
test('it should flag user with userId', async () => {
|
|
22
|
+
const expected = true;
|
|
23
|
+
client.http.post = jest.fn().mockResolvedValue(flaggedUserQueryResponse);
|
|
24
|
+
|
|
25
|
+
const received = await createReport('user', flaggedUser.userId);
|
|
26
|
+
|
|
27
|
+
expect(received).toBe(expected);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
// integration_test_id: e8d0f02c-3558-488f-bdae-e70835d8cefb
|
|
31
|
+
test('it should throw error with 400400 when sending invalid userId', async () => {
|
|
32
|
+
client.http.post = jest
|
|
33
|
+
.fn()
|
|
34
|
+
.mockRejectedValueOnce(
|
|
35
|
+
new ASCApiError('unauthorized', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.ERROR),
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
await expect(createReport('user', flaggedUser.userId)).rejects.toThrow('400400');
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test('it should fire event for user', async () => {
|
|
42
|
+
let dispose;
|
|
43
|
+
const expected = flaggedUser;
|
|
44
|
+
|
|
45
|
+
client.http.post = jest.fn().mockResolvedValue(flaggedUserQueryResponse);
|
|
46
|
+
|
|
47
|
+
const callbackPromise = new Promise(resolve => {
|
|
48
|
+
dispose = onUserFlagged(resolve);
|
|
49
|
+
}).finally(dispose);
|
|
50
|
+
|
|
51
|
+
const recieved = await createReport('user', flaggedUser.userId);
|
|
52
|
+
|
|
53
|
+
expect(recieved).toBe(true);
|
|
54
|
+
await expect(callbackPromise).resolves.toEqual(expect.objectContaining(expected));
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
test.todo('it should fire event for flagging message');
|
|
58
|
+
test.todo('it should fire event for flagging post');
|
|
59
|
+
|
|
60
|
+
const tests: [keyof typeof REFERENCE_TYPES, string, string][] = [
|
|
61
|
+
['user', 'userId', `/api/v4/me/flags/${encodeURIComponent('userId')}`],
|
|
62
|
+
['post', 'postId', `/api/v3/posts/${encodeURIComponent('postId')}/flag`],
|
|
63
|
+
['message', 'messageId', `/api/v5/messages/${encodeURIComponent('messageId')}/flags`],
|
|
64
|
+
];
|
|
65
|
+
|
|
66
|
+
test.each(tests)(
|
|
67
|
+
'it should call the appropriate api for %s',
|
|
68
|
+
async (referenceType, referenceId, expected) => {
|
|
69
|
+
const apimock = jest.fn();
|
|
70
|
+
|
|
71
|
+
client.http.post = apimock.mockResolvedValue({ data: {} });
|
|
72
|
+
|
|
73
|
+
await createReport(referenceType, referenceId);
|
|
74
|
+
|
|
75
|
+
const received = apimock.mock.lastCall[0];
|
|
76
|
+
|
|
77
|
+
expect(received).toBe(expected);
|
|
78
|
+
},
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
test('it should add data to cache', async () => {
|
|
82
|
+
enableCache();
|
|
83
|
+
const expected = flaggedUser;
|
|
84
|
+
client.http.post = jest.fn().mockResolvedValue(flaggedUserQueryResponse);
|
|
85
|
+
|
|
86
|
+
await createReport('user', flaggedUser.userId);
|
|
87
|
+
const recieved = pullFromCache(['user', 'get', flaggedUser.userId]);
|
|
88
|
+
|
|
89
|
+
expect(recieved?.data).toBe(expected);
|
|
90
|
+
|
|
91
|
+
disableCache();
|
|
92
|
+
});
|
|
93
|
+
});
|