@amityco/ts-sdk 0.0.1-beta.39 → 0.0.1-beta.40
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 +2 -0
- package/dist/@types/core/events.d.ts +22 -22
- package/dist/@types/core/events.d.ts.map +1 -1
- package/dist/@types/core/model.d.ts +3 -2
- package/dist/@types/core/model.d.ts.map +1 -1
- package/dist/@types/core/payload.d.ts +87 -34
- package/dist/@types/core/payload.d.ts.map +1 -1
- package/dist/@types/domains/channel.d.ts +1 -1
- package/dist/@types/domains/client.d.ts +1 -1
- package/dist/@types/domains/client.d.ts.map +1 -1
- package/dist/@types/domains/comment.d.ts +5 -0
- package/dist/@types/domains/comment.d.ts.map +1 -1
- package/dist/@types/domains/community.d.ts +11 -0
- package/dist/@types/domains/community.d.ts.map +1 -1
- package/dist/@types/domains/content.d.ts +7 -1
- package/dist/@types/domains/content.d.ts.map +1 -1
- package/dist/@types/domains/group.d.ts +2 -2
- package/dist/@types/global.d.ts +8 -0
- package/dist/@types/global.d.ts.map +1 -1
- package/dist/cache/api/ingestInCache.d.ts +2 -1
- package/dist/cache/api/ingestInCache.d.ts.map +1 -1
- package/dist/channel/api/banChannelMembers.d.ts.map +1 -1
- package/dist/channel/api/queryChannelMembers.d.ts.map +1 -1
- package/dist/channel/api/unbanChannelMembers.d.ts.map +1 -1
- package/dist/channel/events/onChannelJoined.d.ts.map +1 -1
- package/dist/channel/events/onChannelLeft.d.ts.map +1 -1
- package/dist/channel/events/onChannelMemberAdded.d.ts.map +1 -1
- package/dist/channel/events/onChannelMemberBanned.d.ts.map +1 -1
- package/dist/channel/events/onChannelMemberRemoved.d.ts.map +1 -1
- package/dist/channel/events/onChannelMemberUnbanned.d.ts.map +1 -1
- package/dist/channel/utils/index.d.ts +2 -2
- package/dist/channel/utils/index.d.ts.map +1 -1
- package/dist/comment/api/createComment.d.ts +1 -1
- package/dist/comment/api/createComment.d.ts.map +1 -1
- package/dist/comment/api/deleteComment.d.ts.map +1 -1
- package/dist/comment/api/tests/updateComment.test.d.ts +2 -0
- package/dist/comment/api/tests/updateComment.test.d.ts.map +1 -0
- package/dist/community/api/addCommunityMembers.d.ts.map +1 -1
- package/dist/community/api/addCommunityMembersRoles.d.ts +1 -1
- package/dist/community/api/addCommunityMembersRoles.d.ts.map +1 -1
- package/dist/community/api/deleteCommunity.d.ts.map +1 -1
- package/dist/community/api/joinCommunity.d.ts.map +1 -1
- package/dist/community/api/leaveCommunity.d.ts.map +1 -1
- package/dist/community/api/queryCommunityMembers.d.ts +1 -7
- package/dist/community/api/queryCommunityMembers.d.ts.map +1 -1
- package/dist/community/api/removeCommunityMembers.d.ts.map +1 -1
- package/dist/community/api/removeCommunityMembersRoles.d.ts +1 -1
- package/dist/community/api/removeCommunityMembersRoles.d.ts.map +1 -1
- package/dist/community/events/index.d.ts +2 -0
- package/dist/community/events/index.d.ts.map +1 -1
- package/dist/community/events/onCommunityUserRoleAdded.d.ts +17 -0
- package/dist/community/events/onCommunityUserRoleAdded.d.ts.map +1 -0
- package/dist/community/events/onCommunityUserRoleRemoved.d.ts +17 -0
- package/dist/community/events/onCommunityUserRoleRemoved.d.ts.map +1 -0
- package/dist/community/events/test/onCommunityUserRoleAdded.test.d.ts +2 -0
- package/dist/community/events/test/onCommunityUserRoleAdded.test.d.ts.map +1 -0
- package/dist/community/events/test/onCommunityUserRoleRemoved.test.d.ts +2 -0
- package/dist/community/events/test/onCommunityUserRoleRemoved.test.d.ts.map +1 -0
- package/dist/community/events/utils.d.ts.map +1 -1
- package/dist/community/observers/index.d.ts +2 -0
- package/dist/community/observers/index.d.ts.map +1 -1
- package/dist/community/observers/liveCommunity.d.ts +21 -0
- package/dist/community/observers/liveCommunity.d.ts.map +1 -0
- package/dist/community/observers/liveCommunityMembers.d.ts +20 -0
- package/dist/community/observers/liveCommunityMembers.d.ts.map +1 -0
- package/dist/community/observers/tests/liveCommunity.test.d.ts +2 -0
- package/dist/community/observers/tests/liveCommunity.test.d.ts.map +1 -0
- package/dist/community/observers/tests/liveCommunityMembers.test.d.ts +2 -0
- package/dist/community/observers/tests/liveCommunityMembers.test.d.ts.map +1 -0
- package/dist/community/utils/payload.d.ts +3 -5
- package/dist/community/utils/payload.d.ts.map +1 -1
- package/dist/core/device.d.ts.map +1 -1
- package/dist/core/events.d.ts +3 -3
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/model/idResolvers.d.ts +2 -4
- package/dist/core/model/idResolvers.d.ts.map +1 -1
- package/dist/core/model/identifyModel.d.ts +2 -2
- package/dist/core/model/identifyModel.d.ts.map +1 -1
- package/dist/core/model/index.d.ts.map +1 -1
- package/dist/core/query/query.d.ts.map +1 -1
- package/dist/external/api/tests/createUserToken.test.d.ts +2 -0
- package/dist/external/api/tests/createUserToken.test.d.ts.map +1 -0
- package/dist/feed/api/queryGlobalFeed.d.ts.map +1 -1
- package/dist/group/utils/withUser.d.ts.map +1 -1
- package/dist/index.cjs.js +481 -200
- package/dist/index.esm.js +477 -200
- package/dist/index.umd.js +4 -4
- package/dist/message/api/createMessage.d.ts.map +1 -1
- package/dist/message/utils/index.d.ts +3 -3
- package/dist/message/utils/index.d.ts.map +1 -1
- package/dist/poll/api/tests/closePoll.test.d.ts +2 -0
- package/dist/poll/api/tests/closePoll.test.d.ts.map +1 -0
- package/dist/poll/api/tests/createPoll.test.d.ts +2 -0
- package/dist/poll/api/tests/createPoll.test.d.ts.map +1 -0
- package/dist/poll/api/tests/getPoll.test.d.ts +2 -0
- package/dist/poll/api/tests/getPoll.test.d.ts.map +1 -0
- package/dist/poll/api/tests/votePoll.test.d.ts +2 -0
- package/dist/poll/api/tests/votePoll.test.d.ts.map +1 -0
- package/dist/post/api/approvePost.d.ts.map +1 -1
- package/dist/post/api/createPost.d.ts.map +1 -1
- package/dist/post/api/declinePost.d.ts.map +1 -1
- package/dist/post/api/deletePost.d.ts.map +1 -1
- package/dist/post/api/getPost.d.ts.map +1 -1
- package/dist/post/api/getPosts.d.ts.map +1 -1
- package/dist/post/api/queryPosts.d.ts.map +1 -1
- package/dist/post/api/updatePost.d.ts.map +1 -1
- package/dist/post/events/utils.d.ts.map +1 -1
- package/dist/reaction/api/queryReactions.d.ts.map +1 -1
- package/dist/reaction/api/removeReaction.d.ts.map +1 -1
- package/dist/reaction/events/onReactorAdded.d.ts.map +1 -1
- package/dist/reaction/events/onReactorRemoved.d.ts.map +1 -1
- package/dist/reaction/utils/dispatchReactable.d.ts +1 -1
- package/dist/reaction/utils/dispatchReactable.d.ts.map +1 -1
- package/dist/report/api/createReport.d.ts.map +1 -1
- package/dist/report/api/deleteReport.d.ts.map +1 -1
- package/dist/subChannel/utils/index.d.ts +1 -1
- package/dist/subChannel/utils/index.d.ts.map +1 -1
- package/dist/utils/index.d.ts +2 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/tests/dummy/channel.d.ts +31 -35
- package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
- package/dist/utils/tests/dummy/community.d.ts +35 -84
- package/dist/utils/tests/dummy/community.d.ts.map +1 -1
- package/dist/utils/tests/dummy/feed.d.ts +2 -18
- package/dist/utils/tests/dummy/feed.d.ts.map +1 -1
- package/dist/utils/tests/dummy/member.d.ts +1 -1
- package/dist/utils/tests/dummy/post.d.ts +30 -29
- package/dist/utils/tests/dummy/post.d.ts.map +1 -1
- package/dist/version.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/@types/core/events.ts +22 -20
- package/src/@types/core/model.ts +3 -2
- package/src/@types/core/payload.ts +102 -38
- package/src/@types/domains/channel.ts +1 -1
- package/src/@types/domains/client.ts +1 -1
- package/src/@types/domains/comment.ts +7 -0
- package/src/@types/domains/community.ts +25 -0
- package/src/@types/domains/content.ts +9 -1
- package/src/@types/domains/group.ts +2 -2
- package/src/@types/global.ts +10 -0
- package/src/cache/api/ingestInCache.ts +3 -6
- package/src/cache/api/tests/ingestInCache.test.ts +12 -9
- package/src/channel/api/addChannelMembers.ts +5 -5
- package/src/channel/api/banChannelMembers.ts +1 -3
- package/src/channel/api/getChannel.ts +1 -1
- package/src/channel/api/queryChannelMembers.ts +1 -3
- package/src/channel/api/removeChannelMembers.ts +5 -5
- package/src/channel/api/tests/addChannelMembers.test.ts +4 -3
- package/src/channel/api/tests/createChannel.test.ts +5 -3
- package/src/channel/api/tests/getChannel.test.ts +2 -1
- package/src/channel/api/tests/joinChannel.test.ts +2 -2
- package/src/channel/api/tests/leaveChannel.test.ts +2 -2
- package/src/channel/api/tests/queryChannelMembers.test.ts +2 -5
- package/src/channel/api/tests/queryChannels.test.ts +4 -3
- package/src/channel/api/tests/removeChannelMembers.test.ts +16 -5
- package/src/channel/api/unbanChannelMembers.ts +1 -3
- package/src/channel/events/onChannelJoined.ts +1 -3
- package/src/channel/events/onChannelLeft.ts +1 -3
- package/src/channel/events/onChannelMemberAdded.ts +1 -3
- package/src/channel/events/onChannelMemberBanned.ts +1 -3
- package/src/channel/events/onChannelMemberRemoved.ts +1 -3
- package/src/channel/events/onChannelMemberUnbanned.ts +1 -3
- package/src/channel/observers/tests/liveChannelMembers.test.ts +5 -12
- package/src/channel/observers/tests/liveChannels.test.ts +3 -1
- package/src/channel/utils/index.ts +9 -6
- package/src/comment/api/createComment.ts +18 -2
- package/src/comment/api/deleteComment.ts +19 -2
- package/src/comment/api/tests/createComment.test.ts +169 -9
- package/src/comment/api/tests/updateComment.test.ts +189 -0
- package/src/comment/events/tests/onCommentCreated.test.ts +3 -3
- package/src/comment/events/tests/onCommentDeleted.test.ts +3 -3
- package/src/comment/observers/tests/liveComment.test.ts +18 -2
- package/src/community/api/addCommunityMembers.ts +6 -3
- package/src/community/api/addCommunityMembersRoles.ts +5 -2
- package/src/community/api/createCommunity.ts +5 -5
- package/src/community/api/deleteCommunity.ts +9 -1
- package/src/community/api/getCommunities.ts +2 -2
- package/src/community/api/getCommunity.ts +2 -2
- package/src/community/api/getRecommendedCommunities.ts +2 -2
- package/src/community/api/getTopTrendingCommunities.ts +2 -2
- package/src/community/api/joinCommunity.ts +6 -3
- package/src/community/api/leaveCommunity.ts +6 -3
- package/src/community/api/queryCommunities.ts +3 -3
- package/src/community/api/queryCommunityMembers.ts +3 -7
- package/src/community/api/removeCommunityMembers.ts +7 -3
- package/src/community/api/removeCommunityMembersRoles.ts +5 -2
- package/src/community/api/test/queryCommunityMembers.test.ts +2 -1
- package/src/community/api/test/removeCommunityMemberRole.test.ts +4 -1
- package/src/community/api/updateCommunity.ts +5 -5
- package/src/community/events/index.ts +2 -0
- package/src/community/events/onCommunityUserRoleAdded.ts +20 -0
- package/src/community/events/onCommunityUserRoleRemoved.ts +20 -0
- package/src/community/events/test/onCommunityDeleted.test.ts +8 -1
- package/src/community/events/test/onCommunityUserRoleAdded.test.ts +50 -0
- package/src/community/events/test/onCommunityUserRoleRemoved.test.ts +50 -0
- package/src/community/events/utils.ts +4 -8
- package/src/community/observers/index.ts +4 -0
- package/src/community/observers/liveCommunity.ts +45 -0
- package/src/community/observers/liveCommunityMembers.ts +187 -0
- package/src/community/observers/tests/liveCommunities.test.ts +38 -18
- package/src/community/observers/tests/liveCommunity.test.ts +147 -0
- package/src/community/observers/tests/liveCommunityMembers.test.ts +195 -0
- package/src/community/utils/payload.ts +28 -22
- package/src/core/device.ts +2 -4
- package/src/core/model/idResolvers.ts +4 -3
- package/src/core/model/identifyModel.ts +3 -3
- package/src/core/model/index.ts +1 -0
- package/src/core/query/query.ts +7 -0
- package/src/core/tests/query/query/runQuery.test.ts +8 -3
- package/src/core/tests/subscription.test.ts +80 -2
- package/src/external/api/tests/createUserToken.test.ts +29 -0
- package/src/feed/api/queryGlobalFeed.ts +8 -4
- package/src/group/utils/test/withUsers.test.ts +5 -5
- package/src/group/utils/withUser.ts +20 -14
- package/src/message/api/createMessage.ts +10 -9
- package/src/message/api/getMessage.ts +2 -2
- package/src/message/api/getMessages.ts +1 -1
- package/src/message/api/queryMessages.ts +2 -2
- package/src/message/api/tests/createMessage.test.ts +5 -1
- package/src/message/api/updateMessage.ts +1 -1
- package/src/message/events/onMessageCreated.ts +1 -1
- package/src/message/events/onMessageDeleted.ts +1 -1
- package/src/message/events/onMessageFetched.ts +1 -1
- package/src/message/events/onMessageFlagCleared.ts +1 -1
- package/src/message/events/onMessageFlagged.ts +1 -1
- package/src/message/events/onMessageReactionAdded.ts +1 -1
- package/src/message/events/onMessageReactionRemoved.ts +1 -1
- package/src/message/events/onMessageUnflagged.ts +1 -1
- package/src/message/events/onMessageUpdated.ts +1 -1
- package/src/message/tests/events.test.ts +10 -2
- package/src/message/tests/observers/liveMessage.test.ts +6 -1
- package/src/message/tests/observers/liveMessages.test.ts +16 -3
- package/src/message/utils/index.ts +5 -3
- package/src/poll/api/tests/closePoll.test.ts +50 -0
- package/src/poll/api/tests/createPoll.test.ts +70 -0
- package/src/poll/api/tests/getPoll.test.ts +31 -0
- package/src/poll/api/tests/votePoll.test.ts +41 -0
- package/src/poll/events/onPollDeleted.ts +1 -1
- package/src/poll/events/onPollUpdated.ts +1 -1
- package/src/post/api/approvePost.ts +10 -10
- package/src/post/api/createPost.ts +6 -3
- package/src/post/api/declinePost.ts +11 -11
- package/src/post/api/deletePost.ts +19 -2
- package/src/post/api/getPost.ts +5 -2
- package/src/post/api/getPosts.ts +4 -1
- package/src/post/api/queryPosts.ts +3 -1
- package/src/post/api/tests/queryPosts.test.ts +5 -4
- package/src/post/api/updatePost.ts +4 -1
- package/src/post/events/onPostReactionAdded.ts +1 -1
- package/src/post/events/onPostReactionRemoved.ts +1 -1
- package/src/post/events/utils.ts +12 -2
- package/src/post/observers/tests/livePost.test.ts +10 -3
- package/src/post/observers/tests/livePosts.test.ts +12 -4
- package/src/post/tests/api/getPost.test.ts +13 -3
- package/src/post/tests/api/queryPosts.test.ts +5 -4
- package/src/reaction/api/addReaction.ts +3 -3
- package/src/reaction/api/queryReactions.ts +2 -0
- package/src/reaction/api/removeReaction.ts +4 -3
- package/src/reaction/events/onReactionAdded.ts +3 -3
- package/src/reaction/events/onReactionRemoved.ts +3 -3
- package/src/reaction/events/onReactorAdded.ts +8 -2
- package/src/reaction/events/onReactorRemoved.ts +8 -2
- package/src/reaction/utils/dispatchReactable.ts +1 -1
- package/src/reaction/utils/fetchReference.ts +1 -1
- package/src/report/api/createReport.ts +14 -8
- package/src/report/api/deleteReport.ts +14 -8
- package/src/subChannel/api/createSubChannel.ts +1 -1
- package/src/subChannel/api/getSubChannel.ts +1 -1
- package/src/subChannel/api/getSubChannels.ts +1 -1
- package/src/subChannel/api/querySubChannels.ts +2 -2
- package/src/subChannel/api/updateSubChannel.ts +1 -1
- package/src/subChannel/events/onSubChannelCreated.ts +1 -1
- package/src/subChannel/events/onSubChannelDeleted.ts +1 -1
- package/src/subChannel/events/onSubChannelUpdated.ts +1 -1
- package/src/subChannel/utils/index.ts +2 -2
- package/src/user/observers/tests/liveUsers.test.ts +2 -0
- package/src/user/tests/api/getUser.test.ts +17 -3
- package/src/utils/index.ts +2 -2
- package/src/utils/liveObject.ts +1 -1
- package/src/utils/tests/dummy/channel.ts +18 -11
- package/src/utils/tests/dummy/community.ts +68 -6
- package/src/utils/tests/dummy/feed.ts +1 -1
- package/src/utils/tests/dummy/member.ts +1 -1
- package/src/utils/tests/dummy/post.ts +93 -9
- package/src/version.ts +9 -3
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { client, poll11 } from '~/utils/tests';
|
|
2
|
+
import { ASCError } from '~/core/errors';
|
|
3
|
+
import { disableCache, enableCache } from '~/cache/api';
|
|
4
|
+
import { createPoll } from '../createPoll';
|
|
5
|
+
import { getPoll } from '../getPoll';
|
|
6
|
+
|
|
7
|
+
describe('createPoll', () => {
|
|
8
|
+
beforeAll(enableCache);
|
|
9
|
+
afterAll(disableCache);
|
|
10
|
+
|
|
11
|
+
const bundle: Parameters<typeof createPoll>[0] = {
|
|
12
|
+
answerType: 'single',
|
|
13
|
+
answers: [
|
|
14
|
+
{
|
|
15
|
+
data: 'answer1',
|
|
16
|
+
dataType: 'text',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
data: 'answer1',
|
|
20
|
+
dataType: 'text',
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
question: 'question',
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// integration_test_id: 5dc099fd-8e89-4f78-bf6c-fda6dbd06b66
|
|
27
|
+
it('should create a poll with a single answer', async () => {
|
|
28
|
+
client.http.post = jest.fn().mockResolvedValueOnce({ data: { polls: [poll11] } });
|
|
29
|
+
|
|
30
|
+
const { data: poll } = await createPoll(bundle);
|
|
31
|
+
const { data: cachedPoll } = getPoll.locally(poll.pollId)!;
|
|
32
|
+
|
|
33
|
+
expect(poll.pollId).toBeDefined();
|
|
34
|
+
expect(cachedPoll).toMatchObject(poll);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// integration_test_id: d18d4f13-6ac5-42f1-822b-a22fc0a7cf90
|
|
38
|
+
it('should create a poll with multiple answers', async () => {
|
|
39
|
+
client.http.post = jest.fn().mockResolvedValueOnce({ data: { polls: [poll11] } });
|
|
40
|
+
|
|
41
|
+
const { data: poll } = await createPoll({
|
|
42
|
+
...bundle,
|
|
43
|
+
answerType: 'multiple',
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
expect(poll.pollId).toBeDefined();
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// integration_test_id: 4cda145c-0bc8-4aaf-9ec0-02676bbde8a6
|
|
50
|
+
it('should fail if question exceeds 500 characters', async () => {
|
|
51
|
+
client.http.post = jest
|
|
52
|
+
.fn()
|
|
53
|
+
.mockRejectedValueOnce(
|
|
54
|
+
new ASCError('error message', Amity.ServerError.BUSINESS_ERROR, Amity.ErrorLevel.FATAL),
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
await expect(() => createPoll(bundle)).rejects.toThrow();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// integration_test_id: a96780e1-758e-4de7-9c18-fdb34c4cacc7
|
|
61
|
+
it('should fail if question exceeds 200 characters', async () => {
|
|
62
|
+
client.http.post = jest
|
|
63
|
+
.fn()
|
|
64
|
+
.mockRejectedValueOnce(
|
|
65
|
+
new ASCError('error message', Amity.ServerError.BUSINESS_ERROR, Amity.ErrorLevel.FATAL),
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
await expect(() => createPoll(bundle)).rejects.toThrow();
|
|
69
|
+
});
|
|
70
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { client, poll11 } from '~/utils/tests';
|
|
2
|
+
import { ASCError } from '~/core/errors';
|
|
3
|
+
import { disableCache, enableCache } from '~/cache/api';
|
|
4
|
+
import { getPoll } from '../getPoll';
|
|
5
|
+
|
|
6
|
+
describe('getPoll', () => {
|
|
7
|
+
beforeAll(enableCache);
|
|
8
|
+
afterAll(disableCache);
|
|
9
|
+
|
|
10
|
+
// integration_test_id: 0d096a75-2f42-489e-8435-e3022eafb1a3
|
|
11
|
+
it('should fetch the poll', async () => {
|
|
12
|
+
client.http.get = jest.fn().mockResolvedValueOnce({ data: { polls: [poll11] } });
|
|
13
|
+
|
|
14
|
+
const { data: poll } = await getPoll(poll11.pollId);
|
|
15
|
+
const { data: cachedPoll } = getPoll.locally(poll11.pollId)!;
|
|
16
|
+
|
|
17
|
+
expect(poll.pollId).toEqual(poll11.pollId);
|
|
18
|
+
expect(cachedPoll).toMatchObject(poll);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// integration_test_id: 074fdf85-bbb6-4957-a89e-26aa10871dc4
|
|
22
|
+
it('should fail to fetch if the poll does not exist', async () => {
|
|
23
|
+
client.http.get = jest
|
|
24
|
+
.fn()
|
|
25
|
+
.mockRejectedValueOnce(
|
|
26
|
+
new ASCError('error message', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.FATAL),
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
await expect(() => getPoll('non-existent-poll-id')).rejects.toThrow();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { client, pause, poll11 } from '~/utils/tests';
|
|
2
|
+
import { ASCError } from '~/core/errors';
|
|
3
|
+
import { disableCache, enableCache } from '~/cache/api';
|
|
4
|
+
import { onPollUpdated } from '~/poll/events';
|
|
5
|
+
import { votePoll } from '../votePoll';
|
|
6
|
+
import { getPoll } from '../getPoll';
|
|
7
|
+
|
|
8
|
+
describe('votePoll', () => {
|
|
9
|
+
beforeAll(enableCache);
|
|
10
|
+
afterAll(disableCache);
|
|
11
|
+
|
|
12
|
+
// integration_test_id: 2abcbca5-f845-4e96-9405-23781013738e
|
|
13
|
+
it('should vote', async () => {
|
|
14
|
+
client.http.post = jest
|
|
15
|
+
.fn()
|
|
16
|
+
.mockResolvedValueOnce({ data: { polls: [{ ...poll11, isVoted: true }] } });
|
|
17
|
+
const callback = jest.fn();
|
|
18
|
+
onPollUpdated(callback);
|
|
19
|
+
|
|
20
|
+
const { data: poll } = await votePoll(poll11.pollId, [poll11.answers[0].id]);
|
|
21
|
+
const { data: cachedPoll } = getPoll.locally(poll.pollId)!;
|
|
22
|
+
await pause();
|
|
23
|
+
|
|
24
|
+
expect(poll.isVoted).toEqual(true);
|
|
25
|
+
expect(cachedPoll).toMatchObject(poll);
|
|
26
|
+
expect(callback).toHaveBeenCalledWith(poll);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// integration_test_id: b6ab2681-7f25-47a0-bc14-f4f542a3cf80
|
|
30
|
+
it('should fail to vote for in an invalid poll', async () => {
|
|
31
|
+
client.http.post = jest
|
|
32
|
+
.fn()
|
|
33
|
+
.mockRejectedValueOnce(
|
|
34
|
+
new ASCError('error message', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.FATAL),
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
await expect(() =>
|
|
38
|
+
votePoll('non-existent-poll-id', ['non-existent-answer-id']),
|
|
39
|
+
).rejects.toThrow();
|
|
40
|
+
});
|
|
41
|
+
});
|
|
@@ -21,7 +21,7 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
|
21
21
|
export const onPollDeleted = (callback: Amity.Listener<Amity.Poll>): Amity.Unsubscriber => {
|
|
22
22
|
const client = getActiveClient();
|
|
23
23
|
|
|
24
|
-
const filter = (payload: Amity.
|
|
24
|
+
const filter = (payload: Amity.Events['poll.deleted']) => {
|
|
25
25
|
if (client.cache) ingestInCache(payload);
|
|
26
26
|
|
|
27
27
|
callback(payload.polls[0]);
|
|
@@ -21,7 +21,7 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
|
21
21
|
export const onPollUpdated = (callback: Amity.Listener<Amity.Poll>): Amity.Unsubscriber => {
|
|
22
22
|
const client = getActiveClient();
|
|
23
23
|
|
|
24
|
-
const filter = (payload: Amity.
|
|
24
|
+
const filter = (payload: Amity.Events['poll.updated']) => {
|
|
25
25
|
if (client.cache) ingestInCache(payload);
|
|
26
26
|
|
|
27
27
|
callback(payload.polls[0]);
|
|
@@ -2,6 +2,7 @@ import { getActiveClient } from '~/client/api';
|
|
|
2
2
|
|
|
3
3
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
4
|
import { fireEvent } from '~/core/events';
|
|
5
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* ```js
|
|
@@ -24,25 +25,24 @@ export const approvePost = async (
|
|
|
24
25
|
const client = getActiveClient();
|
|
25
26
|
client.log('post/approvePost', postId);
|
|
26
27
|
|
|
27
|
-
const { data:
|
|
28
|
+
const { data: payload } = await client.http.post<Amity.PostPayload>(
|
|
28
29
|
`/api/v3/posts/${encodeURIComponent(postId)}/approve`,
|
|
29
30
|
);
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
if (client.cache) ingestInCache(approved, { cachedAt });
|
|
32
|
+
fireEvent('post.approved', payload);
|
|
33
33
|
|
|
34
34
|
// fire virtual event for community update
|
|
35
|
-
if (
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
// @ts-ignore as communities is optional currently in PostPayload
|
|
39
|
-
fireEvent('community.updated', { communities: [community] });
|
|
35
|
+
if (payload.posts[0].targetType === 'community') {
|
|
36
|
+
fireEvent('community.updated', payload);
|
|
40
37
|
}
|
|
41
38
|
|
|
42
|
-
|
|
39
|
+
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
40
|
+
const cachedAt = client.cache && Date.now();
|
|
41
|
+
|
|
42
|
+
if (client.cache) ingestInCache(data, { cachedAt });
|
|
43
43
|
|
|
44
44
|
return {
|
|
45
|
-
data:
|
|
45
|
+
data: data.posts.find(post => post.postId === postId)!,
|
|
46
46
|
cachedAt,
|
|
47
47
|
};
|
|
48
48
|
};
|
|
@@ -2,6 +2,7 @@ import { getActiveClient } from '~/client/api';
|
|
|
2
2
|
|
|
3
3
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
4
|
import { fireEvent } from '~/core/events';
|
|
5
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* ```js
|
|
@@ -37,12 +38,14 @@ export const createPost = async <T extends Amity.PostContentType | string>(
|
|
|
37
38
|
delete bundle.dataType;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
const { data } = await client.http.post<Amity.PostPayload>('/api/v4/posts', bundle);
|
|
41
|
+
const { data: payload } = await client.http.post<Amity.PostPayload>('/api/v4/posts', bundle);
|
|
41
42
|
|
|
43
|
+
fireEvent('post.created', payload);
|
|
44
|
+
|
|
45
|
+
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
42
46
|
const cachedAt = client.cache && Date.now();
|
|
43
|
-
if (client.cache) ingestInCache(data, { cachedAt });
|
|
44
47
|
|
|
45
|
-
|
|
48
|
+
if (client.cache) ingestInCache(data, { cachedAt });
|
|
46
49
|
|
|
47
50
|
const { posts } = data;
|
|
48
51
|
|
|
@@ -2,6 +2,7 @@ import { getActiveClient } from '~/client/api';
|
|
|
2
2
|
|
|
3
3
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
4
|
import { fireEvent } from '~/core/events';
|
|
5
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* ```js
|
|
@@ -24,25 +25,24 @@ export const declinePost = async (
|
|
|
24
25
|
const client = getActiveClient();
|
|
25
26
|
client.log('post/declinePost', postId);
|
|
26
27
|
|
|
27
|
-
const { data:
|
|
28
|
+
const { data: payload } = await client.http.post<Amity.PostPayload>(
|
|
28
29
|
`/api/v3/posts/${encodeURIComponent(postId)}/decline`,
|
|
29
30
|
);
|
|
30
31
|
|
|
31
|
-
const cachedAt = client.cache && Date.now();
|
|
32
|
-
if (client.cache) ingestInCache(declined, { cachedAt });
|
|
33
|
-
|
|
34
32
|
// fire virtual event
|
|
35
|
-
if (
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
// @ts-ignore as communities is optional currently in PostPayload
|
|
39
|
-
fireEvent('community.updated', { communities: [community] });
|
|
33
|
+
if (payload.posts[0].targetType === 'community') {
|
|
34
|
+
fireEvent('community.updated', payload);
|
|
40
35
|
}
|
|
41
36
|
|
|
42
|
-
fireEvent('post.declined',
|
|
37
|
+
fireEvent('post.declined', payload);
|
|
38
|
+
|
|
39
|
+
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
40
|
+
const cachedAt = client.cache && Date.now();
|
|
41
|
+
|
|
42
|
+
if (client.cache) ingestInCache(data, { cachedAt });
|
|
43
43
|
|
|
44
44
|
return {
|
|
45
|
-
data:
|
|
45
|
+
data: payload.posts.find(post => post.postId === postId)!,
|
|
46
46
|
cachedAt,
|
|
47
47
|
};
|
|
48
48
|
};
|
|
@@ -44,13 +44,30 @@ export const deletePost = async (
|
|
|
44
44
|
// later when realtime events covers that for us.
|
|
45
45
|
if (post.data.targetType === 'community') {
|
|
46
46
|
const community = await getCommunity(post.data.targetId);
|
|
47
|
-
fireEvent('community.updated', {
|
|
47
|
+
fireEvent('community.updated', {
|
|
48
|
+
communities: [community.data],
|
|
49
|
+
categories: [],
|
|
50
|
+
communityUsers: [],
|
|
51
|
+
feeds: [],
|
|
52
|
+
files: [],
|
|
53
|
+
users: [],
|
|
54
|
+
});
|
|
48
55
|
}
|
|
49
56
|
|
|
50
57
|
// to support hard deletion
|
|
51
58
|
const deleted = { ...post.data, isDeleted: true };
|
|
52
59
|
|
|
53
|
-
fireEvent('post.deleted', {
|
|
60
|
+
fireEvent('post.deleted', {
|
|
61
|
+
posts: [deleted],
|
|
62
|
+
categories: [],
|
|
63
|
+
comments: [],
|
|
64
|
+
communities: [],
|
|
65
|
+
communityUsers: [],
|
|
66
|
+
feeds: [],
|
|
67
|
+
files: [],
|
|
68
|
+
postChildren: [],
|
|
69
|
+
users: [],
|
|
70
|
+
});
|
|
54
71
|
|
|
55
72
|
if (permanent) {
|
|
56
73
|
setTimeout(() => {
|
package/src/post/api/getPost.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
|
5
5
|
import { isInTombstone } from '~/cache/api/isInTombstone';
|
|
6
6
|
import { checkIfShouldGoesToTombstone } from '~/cache/utils';
|
|
7
7
|
import { pushToTombstone } from '~/cache/api/pushToTombstone';
|
|
8
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* ```js
|
|
@@ -26,14 +27,14 @@ export const getPost = async (postId: Amity.Post['postId']): Promise<Amity.Cache
|
|
|
26
27
|
|
|
27
28
|
isInTombstone('post', postId);
|
|
28
29
|
|
|
29
|
-
let
|
|
30
|
+
let payload: Amity.PostPayload;
|
|
30
31
|
|
|
31
32
|
try {
|
|
32
33
|
// API-FIX: endpoint should not be /list, parameters should be querystring.
|
|
33
34
|
const response = await client.http.get<Amity.PostPayload>(
|
|
34
35
|
`/api/v3/posts/${encodeURIComponent(postId)}`,
|
|
35
36
|
);
|
|
36
|
-
|
|
37
|
+
payload = response.data;
|
|
37
38
|
} catch (error) {
|
|
38
39
|
if (checkIfShouldGoesToTombstone((error as Amity.ErrorResponse)?.code)) {
|
|
39
40
|
pushToTombstone('post', postId);
|
|
@@ -42,6 +43,8 @@ export const getPost = async (postId: Amity.Post['postId']): Promise<Amity.Cache
|
|
|
42
43
|
throw error;
|
|
43
44
|
}
|
|
44
45
|
|
|
46
|
+
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
47
|
+
|
|
45
48
|
const cachedAt = client.cache && Date.now();
|
|
46
49
|
if (client.cache) ingestInCache(data, { cachedAt });
|
|
47
50
|
|
package/src/post/api/getPosts.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { getActiveClient } from '~/client/api';
|
|
|
2
2
|
|
|
3
3
|
import { pullFromCache } from '~/cache/api';
|
|
4
4
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
5
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* ```js
|
|
@@ -26,10 +27,12 @@ export const getPosts = async (
|
|
|
26
27
|
const encodedPostIds = postIds.map(postId => encodeURIComponent(postId));
|
|
27
28
|
|
|
28
29
|
// API-FIX: endpoint should not be /list, parameters should be querystring.
|
|
29
|
-
const { data } = await client.http.get<Amity.PostPayload>(`/api/v3/posts/list`, {
|
|
30
|
+
const { data: payload } = await client.http.get<Amity.PostPayload>(`/api/v3/posts/list`, {
|
|
30
31
|
params: { postIds: encodedPostIds },
|
|
31
32
|
});
|
|
32
33
|
|
|
34
|
+
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
35
|
+
|
|
33
36
|
const cachedAt = client.cache && Date.now();
|
|
34
37
|
if (client.cache) ingestInCache(data, { cachedAt });
|
|
35
38
|
|
|
@@ -5,6 +5,7 @@ import { toToken, toPageRaw } from '~/core/query';
|
|
|
5
5
|
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
6
6
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
7
7
|
import { getResolver } from '~/core/model';
|
|
8
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* ```js
|
|
@@ -53,12 +54,13 @@ export const queryPosts = async (
|
|
|
53
54
|
// const { paging, posts } = unwrapPayload(data)
|
|
54
55
|
// unpacking
|
|
55
56
|
const { paging, ...payload } = data;
|
|
57
|
+
const paperedPayload = prepareMembershipPayload(payload, 'communityUsers');
|
|
56
58
|
const { posts } = payload;
|
|
57
59
|
|
|
58
60
|
const cachedAt = client.cache && Date.now();
|
|
59
61
|
|
|
60
62
|
if (client.cache) {
|
|
61
|
-
ingestInCache(
|
|
63
|
+
ingestInCache(paperedPayload, { cachedAt });
|
|
62
64
|
|
|
63
65
|
const cacheKey = ['post', 'query', { ...params, options: { ...page } } as Amity.Serializable];
|
|
64
66
|
pushToCache(cacheKey, { posts: posts.map(getResolver('post')), paging });
|
|
@@ -74,9 +74,10 @@ describe('queryPosts.locally', () => {
|
|
|
74
74
|
enableCache();
|
|
75
75
|
|
|
76
76
|
const { data } = postQueryResponse;
|
|
77
|
-
const {
|
|
77
|
+
const { paging, ...payload } = data;
|
|
78
|
+
const { posts: expected } = payload;
|
|
78
79
|
|
|
79
|
-
ingestInCache(
|
|
80
|
+
ingestInCache(payload as Amity.ProcessedPostPayload);
|
|
80
81
|
|
|
81
82
|
pushToCache(cacheKey, { posts: expected.map(getResolver('post')), paging });
|
|
82
83
|
|
|
@@ -98,7 +99,7 @@ describe('queryPosts.locally', () => {
|
|
|
98
99
|
ingestInCache({
|
|
99
100
|
...data,
|
|
100
101
|
posts: [data.posts[0]],
|
|
101
|
-
} as Amity.
|
|
102
|
+
} as Amity.ProcessedPostPayload);
|
|
102
103
|
|
|
103
104
|
pushToCache(cacheKey, {
|
|
104
105
|
posts: posts.map(getResolver('post')),
|
|
@@ -119,7 +120,7 @@ describe('queryPosts.locally', () => {
|
|
|
119
120
|
const { data } = postQueryResponse;
|
|
120
121
|
const { posts: expected, paging } = data;
|
|
121
122
|
|
|
122
|
-
ingestInCache(data as Amity.
|
|
123
|
+
ingestInCache(data as Amity.ProcessedPostPayload);
|
|
123
124
|
|
|
124
125
|
pushToCache(cacheKey, { posts: expected.map(getResolver('post')), paging });
|
|
125
126
|
|
|
@@ -2,6 +2,7 @@ import { getActiveClient } from '~/client/api';
|
|
|
2
2
|
|
|
3
3
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
4
|
import { fireEvent } from '~/core/events';
|
|
5
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* ```js
|
|
@@ -32,11 +33,13 @@ export const updatePost = async (
|
|
|
32
33
|
const client = getActiveClient();
|
|
33
34
|
client.log('user/updatePost', patch);
|
|
34
35
|
|
|
35
|
-
const { data } = await client.http.put<Amity.PostPayload>(
|
|
36
|
+
const { data: payload } = await client.http.put<Amity.PostPayload>(
|
|
36
37
|
`/api/v4/posts/${encodeURIComponent(postId)}`,
|
|
37
38
|
patch,
|
|
38
39
|
);
|
|
39
40
|
|
|
41
|
+
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
42
|
+
|
|
40
43
|
const cachedAt = client.cache && Date.now();
|
|
41
44
|
if (client.cache) ingestInCache(data, { cachedAt });
|
|
42
45
|
|
|
@@ -30,7 +30,7 @@ export const onPostReactionAdded = (callback: Amity.Listener<Amity.Post>): Amity
|
|
|
30
30
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
31
31
|
const { reactor, ...postPayload } = payload;
|
|
32
32
|
|
|
33
|
-
ingestInCache(postPayload as Amity.
|
|
33
|
+
ingestInCache(postPayload as Amity.ProcessedPostPayload);
|
|
34
34
|
|
|
35
35
|
const post = pullFromCache<Amity.Post>(['post', 'get', payload.posts[0].postId])!;
|
|
36
36
|
|
|
@@ -30,7 +30,7 @@ export const onPostReactionRemoved = (callback: Amity.Listener<Amity.Post>): Ami
|
|
|
30
30
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
31
31
|
const { reactor, ...postPayload } = payload;
|
|
32
32
|
|
|
33
|
-
ingestInCache(postPayload as Amity.
|
|
33
|
+
ingestInCache(postPayload as Amity.ProcessedPostPayload);
|
|
34
34
|
|
|
35
35
|
const post = pullFromCache<Amity.Post>(['post', 'get', payload.posts[0].postId])!;
|
|
36
36
|
|
package/src/post/events/utils.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { getActiveClient } from '~/client/api';
|
|
|
2
2
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
3
3
|
import { createEventSubscriber, fireEvent } from '~/core/events';
|
|
4
4
|
import { queryCache, upsertInCache, pullFromCache } from '~/cache/api';
|
|
5
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
5
6
|
|
|
6
7
|
export const createPostEventSubscriber = (
|
|
7
8
|
event: keyof Amity.MqttPostEvents,
|
|
@@ -15,10 +16,19 @@ export const createPostEventSubscriber = (
|
|
|
15
16
|
} else {
|
|
16
17
|
const { communities, ...others } = payload;
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
const data = prepareMembershipPayload(others, 'communityUsers');
|
|
20
|
+
|
|
21
|
+
ingestInCache(data);
|
|
19
22
|
|
|
20
23
|
if (communities?.[0] && !['post.updated'].includes(event)) {
|
|
21
|
-
fireEvent('community.updated', {
|
|
24
|
+
fireEvent('community.updated', {
|
|
25
|
+
communities,
|
|
26
|
+
categories: [],
|
|
27
|
+
communityUsers: [],
|
|
28
|
+
feeds: [],
|
|
29
|
+
files: [],
|
|
30
|
+
users: [],
|
|
31
|
+
});
|
|
22
32
|
}
|
|
23
33
|
|
|
24
34
|
const post = pullFromCache<Amity.Post>(['post', 'get', payload.posts[0].postId])!;
|
|
@@ -6,13 +6,20 @@ import {
|
|
|
6
6
|
disconnectClient,
|
|
7
7
|
generatePost,
|
|
8
8
|
user12,
|
|
9
|
+
emptyPostPayload,
|
|
9
10
|
} from '~/utils/tests';
|
|
10
11
|
import { getFutureDate } from '~/core/model';
|
|
12
|
+
|
|
11
13
|
import { livePost } from '../livePost';
|
|
12
14
|
|
|
13
15
|
describe('livePost', () => {
|
|
14
16
|
const post = generatePost();
|
|
15
|
-
const response = {
|
|
17
|
+
const response = {
|
|
18
|
+
data: {
|
|
19
|
+
...emptyPostPayload,
|
|
20
|
+
posts: [post],
|
|
21
|
+
} as Amity.PostPayload,
|
|
22
|
+
};
|
|
16
23
|
|
|
17
24
|
beforeAll(async () => {
|
|
18
25
|
await connectClient();
|
|
@@ -47,7 +54,7 @@ describe('livePost', () => {
|
|
|
47
54
|
|
|
48
55
|
livePost(post.postId, callback);
|
|
49
56
|
await pause();
|
|
50
|
-
client.emitter.emit(event, { posts: [update] });
|
|
57
|
+
client.emitter.emit(event, { ...emptyPostPayload, posts: [update] });
|
|
51
58
|
await pause();
|
|
52
59
|
|
|
53
60
|
expect(callback).toHaveBeenCalledTimes(3);
|
|
@@ -82,7 +89,7 @@ describe('livePost', () => {
|
|
|
82
89
|
|
|
83
90
|
livePost(post.postId, callback);
|
|
84
91
|
await pause();
|
|
85
|
-
client.emitter.emit(event, { posts: [update], reactor });
|
|
92
|
+
client.emitter.emit(event, { ...emptyPostPayload, posts: [update], reactor });
|
|
86
93
|
await pause();
|
|
87
94
|
|
|
88
95
|
expect(callback).toHaveBeenCalledTimes(3);
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
post14,
|
|
10
10
|
postQueryResponse,
|
|
11
11
|
postQueryResponsePage2,
|
|
12
|
+
emptyPostPayload,
|
|
12
13
|
} from '~/utils/tests';
|
|
13
14
|
|
|
14
15
|
import { livePosts } from '../livePosts';
|
|
@@ -168,9 +169,7 @@ describe('livePosts', () => {
|
|
|
168
169
|
await pause();
|
|
169
170
|
expect(callback).toHaveBeenCalledTimes(2);
|
|
170
171
|
|
|
171
|
-
client.emitter.emit(event, {
|
|
172
|
-
posts: [post],
|
|
173
|
-
});
|
|
172
|
+
client.emitter.emit(event, { ...emptyPostPayload, posts: [post] });
|
|
174
173
|
|
|
175
174
|
const payload = postQueryResponse.data;
|
|
176
175
|
const deletePayload = payload.posts.filter(p => p.postId !== post.postId);
|
|
@@ -209,6 +208,7 @@ describe('livePosts', () => {
|
|
|
209
208
|
'it should update post in collection onReactionAdded',
|
|
210
209
|
'post.addReaction',
|
|
211
210
|
{
|
|
211
|
+
...emptyPostPayload,
|
|
212
212
|
posts: [{ ...post11, reactionsCount: 1 }],
|
|
213
213
|
reactor: {
|
|
214
214
|
referenceId: post11.postId,
|
|
@@ -224,6 +224,7 @@ describe('livePosts', () => {
|
|
|
224
224
|
'it should update post in collection onReactionRemoved',
|
|
225
225
|
'post.removeReaction',
|
|
226
226
|
{
|
|
227
|
+
...emptyPostPayload,
|
|
227
228
|
posts: [{ ...post11, reactionsCount: 0 }],
|
|
228
229
|
reactor: {
|
|
229
230
|
referenceId: post11.postId,
|
|
@@ -277,6 +278,7 @@ describe('livePosts', () => {
|
|
|
277
278
|
expect(callback).toHaveBeenNthCalledWith(2, expect.objectContaining(snapshot));
|
|
278
279
|
|
|
279
280
|
client.emitter.emit('post.deleted', {
|
|
281
|
+
...emptyPostPayload,
|
|
280
282
|
posts: [deletedPost],
|
|
281
283
|
});
|
|
282
284
|
|
|
@@ -303,6 +305,7 @@ describe('livePosts', () => {
|
|
|
303
305
|
expect(callback).toHaveBeenNthCalledWith(2, expect.objectContaining(snapshot));
|
|
304
306
|
|
|
305
307
|
client.emitter.emit('post.approved', {
|
|
308
|
+
...emptyPostPayload,
|
|
306
309
|
posts: [approvedPost],
|
|
307
310
|
feeds: [
|
|
308
311
|
{
|
|
@@ -323,7 +326,11 @@ describe('livePosts', () => {
|
|
|
323
326
|
const feedId = 'publishedFeed';
|
|
324
327
|
const approvedPost = { ...post14, feedId };
|
|
325
328
|
|
|
326
|
-
const approvedFeed = {
|
|
329
|
+
const approvedFeed = {
|
|
330
|
+
...postQueryResponsePage2.data.feeds[0],
|
|
331
|
+
feedType: 'published' as const,
|
|
332
|
+
};
|
|
333
|
+
|
|
327
334
|
postQueryResponsePage2.data.feeds = [approvedFeed];
|
|
328
335
|
|
|
329
336
|
const callback = jest.fn();
|
|
@@ -341,6 +348,7 @@ describe('livePosts', () => {
|
|
|
341
348
|
expect(callback).toHaveBeenNthCalledWith(2, expect.objectContaining(snapshot));
|
|
342
349
|
|
|
343
350
|
client.emitter.emit('post.approved', {
|
|
351
|
+
...emptyPostPayload,
|
|
344
352
|
posts: [approvedPost],
|
|
345
353
|
feeds: [
|
|
346
354
|
{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ASCApiError } from '~/core/errors';
|
|
2
|
-
import { client, posts } from '~/utils/tests';
|
|
2
|
+
import { client, emptyPostPayload, posts } from '~/utils/tests';
|
|
3
3
|
import { pushToCache, enableCache, disableCache } from '~/cache/api';
|
|
4
4
|
|
|
5
5
|
import { getPost } from '~/post/api';
|
|
@@ -44,7 +44,12 @@ describe('post/api', () => {
|
|
|
44
44
|
|
|
45
45
|
describe('getPost', () => {
|
|
46
46
|
test('should return a post', async () => {
|
|
47
|
-
client.http.get = jest.fn().mockReturnValueOnce({
|
|
47
|
+
client.http.get = jest.fn().mockReturnValueOnce({
|
|
48
|
+
data: {
|
|
49
|
+
...emptyPostPayload,
|
|
50
|
+
posts: [post],
|
|
51
|
+
},
|
|
52
|
+
});
|
|
48
53
|
|
|
49
54
|
const data = await getPost(post.postId);
|
|
50
55
|
|
|
@@ -54,7 +59,12 @@ describe('post/api', () => {
|
|
|
54
59
|
|
|
55
60
|
test('should put post into the cache after fetch', async () => {
|
|
56
61
|
enableCache();
|
|
57
|
-
client.http.get = jest.fn().mockReturnValueOnce({
|
|
62
|
+
client.http.get = jest.fn().mockReturnValueOnce({
|
|
63
|
+
data: {
|
|
64
|
+
...emptyPostPayload,
|
|
65
|
+
posts: [post],
|
|
66
|
+
},
|
|
67
|
+
});
|
|
58
68
|
|
|
59
69
|
await getPost(post.postId);
|
|
60
70
|
|