@amityco/ts-sdk 0.0.1-beta.30 → 0.0.1-beta.32
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/dist/@types/core/cache.d.ts +3 -0
- package/dist/@types/core/cache.d.ts.map +1 -1
- package/dist/@types/core/errors.d.ts +2 -1
- package/dist/@types/core/errors.d.ts.map +1 -1
- package/dist/@types/core/events.d.ts +2 -0
- package/dist/@types/core/events.d.ts.map +1 -1
- package/dist/@types/core/live.d.ts +8 -4
- package/dist/@types/core/live.d.ts.map +1 -1
- package/dist/@types/core/query.d.ts +1 -1
- package/dist/@types/core/query.d.ts.map +1 -1
- package/dist/@types/domains/channel.d.ts +1 -0
- package/dist/@types/domains/channel.d.ts.map +1 -1
- package/dist/@types/domains/message.d.ts +13 -6
- package/dist/@types/domains/message.d.ts.map +1 -1
- package/dist/@types/domains/post.d.ts +10 -3
- package/dist/@types/domains/post.d.ts.map +1 -1
- package/dist/@types/domains/user.d.ts +1 -0
- package/dist/@types/domains/user.d.ts.map +1 -1
- package/dist/@types/index.d.ts +2 -2
- package/dist/@types/index.d.ts.map +1 -1
- package/dist/cache/api/backupCache.d.ts.map +1 -1
- package/dist/cache/api/isInTombstone.d.ts +18 -0
- package/dist/cache/api/isInTombstone.d.ts.map +1 -0
- package/dist/cache/api/pushToTombstone.d.ts +17 -0
- package/dist/cache/api/pushToTombstone.d.ts.map +1 -0
- package/dist/cache/api/tests/pushToCache.test.d.ts +2 -0
- package/dist/cache/api/tests/pushToCache.test.d.ts.map +1 -0
- package/dist/cache/utils/index.d.ts +17 -0
- package/dist/cache/utils/index.d.ts.map +1 -1
- package/dist/channel/api/addChannelMembers.d.ts.map +1 -1
- package/dist/channel/api/getChannel.d.ts.map +1 -1
- package/dist/channel/api/queryChannelMembers.d.ts +1 -1
- package/dist/channel/api/queryChannelMembers.d.ts.map +1 -1
- package/dist/channel/api/queryChannels.d.ts +1 -1
- package/dist/channel/api/queryChannels.d.ts.map +1 -1
- package/dist/channel/api/tests/addChannelMembers.test.d.ts +2 -0
- package/dist/channel/api/tests/addChannelMembers.test.d.ts.map +1 -0
- package/dist/channel/api/tests/getChannel.test.d.ts +2 -0
- package/dist/channel/api/tests/getChannel.test.d.ts.map +1 -0
- package/dist/channel/api/tests/queryChannelMembers.test.d.ts +2 -0
- package/dist/channel/api/tests/queryChannelMembers.test.d.ts.map +1 -0
- package/dist/channel/api/tests/queryChannels.test.d.ts +2 -0
- package/dist/channel/api/tests/queryChannels.test.d.ts.map +1 -0
- package/dist/channel/events/index.d.ts +2 -0
- package/dist/channel/events/index.d.ts.map +1 -1
- package/dist/channel/events/onChannelMemberAdded.d.ts.map +1 -1
- package/dist/channel/events/onChannelMemberBanned.d.ts +17 -0
- package/dist/channel/events/onChannelMemberBanned.d.ts.map +1 -0
- package/dist/channel/events/onChannelMemberUnbanned.d.ts +17 -0
- package/dist/channel/events/onChannelMemberUnbanned.d.ts.map +1 -0
- package/dist/channel/events/tests/onChannelMemberBanned.test.d.ts +2 -0
- package/dist/channel/events/tests/onChannelMemberBanned.test.d.ts.map +1 -0
- package/dist/channel/events/tests/onChannelMemberUnbanned.test.d.ts +2 -0
- package/dist/channel/events/tests/onChannelMemberUnbanned.test.d.ts.map +1 -0
- package/dist/channel/observers/liveChannelMembers.d.ts.map +1 -1
- package/dist/channel/observers/liveChannels.d.ts.map +1 -1
- package/dist/channel/{tests/utils → utils/tests}/prepareChannelPayload.test.d.ts +0 -0
- package/dist/channel/utils/tests/prepareChannelPayload.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/query/filtering.d.ts +11 -0
- package/dist/core/query/filtering.d.ts.map +1 -1
- package/dist/core/query/query.d.ts.map +1 -1
- package/dist/core/transports/http.d.ts +5 -0
- package/dist/core/transports/http.d.ts.map +1 -1
- package/dist/core/transports/test/http.test.d.ts +2 -0
- package/dist/core/transports/test/http.test.d.ts.map +1 -0
- package/dist/index.cjs.js +980 -534
- package/dist/index.esm.js +962 -526
- package/dist/index.umd.js +4 -4
- package/dist/message/api/createMessage.d.ts +4 -1
- package/dist/message/api/createMessage.d.ts.map +1 -1
- package/dist/message/api/deleteMessage.d.ts.map +1 -1
- package/dist/message/api/getMessage.d.ts +1 -1
- package/dist/message/api/getMessage.d.ts.map +1 -1
- package/dist/message/api/getMessages.d.ts.map +1 -1
- package/dist/message/api/queryMessages.d.ts.map +1 -1
- package/dist/message/api/tests/createMessage.test.d.ts +2 -0
- package/dist/message/api/tests/createMessage.test.d.ts.map +1 -0
- package/dist/message/api/tests/deleteMessage.test.d.ts +2 -0
- package/dist/message/api/tests/deleteMessage.test.d.ts.map +1 -0
- package/dist/message/api/tests/getMessage.test.d.ts +2 -0
- package/dist/message/api/tests/getMessage.test.d.ts.map +1 -0
- package/dist/message/api/tests/getMessages.test.d.ts +2 -0
- package/dist/message/api/tests/getMessages.test.d.ts.map +1 -0
- package/dist/message/api/tests/queryMessages.test.d.ts +2 -0
- package/dist/message/api/tests/queryMessages.test.d.ts.map +1 -0
- package/dist/message/api/tests/updateMessage.test.d.ts +2 -0
- package/dist/message/api/tests/updateMessage.test.d.ts.map +1 -0
- package/dist/message/api/updateMessage.d.ts.map +1 -1
- package/dist/message/events/index.d.ts +1 -0
- package/dist/message/events/index.d.ts.map +1 -1
- package/dist/message/events/onMessageFetched.d.ts +17 -0
- package/dist/message/events/onMessageFetched.d.ts.map +1 -0
- package/dist/message/observers/index.d.ts +2 -1
- package/dist/message/observers/index.d.ts.map +1 -1
- package/dist/message/observers/liveMessage.d.ts +18 -0
- package/dist/message/observers/liveMessage.d.ts.map +1 -0
- package/dist/message/observers/liveMessages.d.ts.map +1 -1
- package/dist/message/observers/observeMessage.d.ts.map +1 -1
- package/dist/message/tests/observers/liveMessage.test.d.ts +2 -0
- package/dist/message/tests/observers/liveMessage.test.d.ts.map +1 -0
- package/dist/message/{observers/tests → tests/observers}/liveMessages.test.d.ts +0 -0
- package/dist/message/tests/observers/liveMessages.test.d.ts.map +1 -0
- package/dist/post/api/deletePost.d.ts.map +1 -1
- package/dist/post/api/getPost.d.ts.map +1 -1
- package/dist/post/api/updatePost.d.ts +6 -1
- package/dist/post/api/updatePost.d.ts.map +1 -1
- package/dist/reaction/api/addReaction.d.ts.map +1 -1
- package/dist/reaction/api/removeReaction.d.ts.map +1 -1
- package/dist/reaction/api/tests/addReaction.test.d.ts +2 -0
- package/dist/reaction/api/tests/addReaction.test.d.ts.map +1 -0
- package/dist/reaction/api/tests/removeReaction.test.d.ts +2 -0
- package/dist/reaction/api/tests/removeReaction.test.d.ts.map +1 -0
- package/dist/user/api/getUser.d.ts +1 -1
- package/dist/user/api/getUser.d.ts.map +1 -1
- package/dist/user/api/getUsers.d.ts.map +1 -1
- package/dist/user/api/queryUsers.d.ts.map +1 -1
- package/dist/user/api/tests/queryUsers.test.d.ts +2 -0
- package/dist/user/api/tests/queryUsers.test.d.ts.map +1 -0
- package/dist/user/api/updateUser.d.ts.map +1 -1
- package/dist/user/events/index.d.ts +1 -0
- package/dist/user/events/index.d.ts.map +1 -1
- package/dist/user/events/onUserFetched.d.ts +17 -0
- package/dist/user/events/onUserFetched.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 +18 -0
- package/dist/user/observers/liveUser.d.ts.map +1 -0
- package/dist/user/observers/observeUser.d.ts.map +1 -1
- package/dist/user/tests/api/getUser.test.d.ts +2 -0
- package/dist/user/tests/api/getUser.test.d.ts.map +1 -0
- package/dist/user/tests/observers/liveUser.test.d.ts +2 -0
- package/dist/user/tests/observers/liveUser.test.d.ts.map +1 -0
- package/dist/utils/constants.d.ts +3 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/tests/dummy/channel.d.ts +15 -0
- package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
- package/dist/utils/tests/dummy/message.d.ts +12 -1
- package/dist/utils/tests/dummy/message.d.ts.map +1 -1
- package/dist/utils/tests/dummy/post.d.ts +12 -1
- package/dist/utils/tests/dummy/post.d.ts.map +1 -1
- package/dist/utils/tests/dummy/user.d.ts +10 -0
- package/dist/utils/tests/dummy/user.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/@types/core/cache.ts +4 -0
- package/src/@types/core/errors.ts +1 -0
- package/src/@types/core/events.ts +2 -0
- package/src/@types/core/live.ts +10 -4
- package/src/@types/core/query.ts +1 -1
- package/src/@types/domains/channel.ts +6 -0
- package/src/@types/domains/message.ts +13 -10
- package/src/@types/domains/post.ts +10 -3
- package/src/@types/domains/user.ts +8 -0
- package/src/@types/index.ts +2 -2
- package/src/cache/api/backupCache.ts +0 -1
- package/src/cache/api/index.ts +2 -1
- package/src/cache/api/isInTombstone.ts +41 -0
- package/src/cache/api/pushToTombstone.ts +33 -0
- package/src/cache/api/tests/pushToCache.test.ts +57 -0
- package/src/cache/utils/index.ts +22 -0
- package/src/channel/api/addChannelMembers.ts +9 -1
- package/src/channel/api/getChannel.ts +20 -5
- package/src/channel/api/queryChannelMembers.ts +53 -5
- package/src/channel/api/queryChannels.ts +31 -4
- package/src/channel/api/tests/addChannelMembers.test.ts +95 -0
- package/src/channel/api/tests/getChannel.test.ts +108 -0
- package/src/channel/api/tests/queryChannelMembers.test.ts +115 -0
- package/src/channel/api/tests/queryChannels.test.ts +121 -0
- package/src/channel/events/index.ts +5 -0
- package/src/channel/events/onChannelMemberAdded.ts +1 -1
- package/src/channel/events/onChannelMemberBanned.ts +36 -0
- package/src/channel/events/onChannelMemberUnbanned.ts +36 -0
- package/src/channel/events/tests/onChannelMemberBanned.test.ts +58 -0
- package/src/channel/events/tests/onChannelMemberUnbanned.test.ts +58 -0
- package/src/channel/observers/liveChannelMembers.ts +28 -4
- package/src/channel/observers/liveChannels.ts +7 -1
- package/src/channel/observers/tests/liveChannelMembers.test.ts +53 -11
- package/src/channel/observers/tests/liveChannels.test.ts +50 -21
- package/src/channel/{tests/utils → utils/tests}/prepareChannelPayload.test.ts +1 -1
- package/src/core/events.ts +2 -1
- package/src/core/query/filtering.ts +49 -0
- package/src/core/query/query.ts +9 -6
- package/src/core/tests/query/query.test.ts +12 -2
- package/src/core/transports/http.ts +3 -17
- package/src/core/transports/test/http.test.ts +83 -0
- package/src/message/api/createMessage.ts +15 -9
- package/src/message/api/deleteMessage.ts +4 -4
- package/src/message/api/getMessage.ts +32 -4
- package/src/message/api/getMessages.ts +6 -1
- package/src/message/api/queryMessages.ts +3 -0
- package/src/message/api/tests/createMessage.test.ts +99 -0
- package/src/message/api/tests/deleteMessage.test.ts +110 -0
- package/src/message/api/tests/getMessage.test.ts +121 -0
- package/src/message/api/tests/getMessages.test.ts +108 -0
- package/src/message/api/tests/queryMessages.test.ts +115 -0
- package/src/message/api/tests/updateMessage.test.ts +100 -0
- package/src/message/api/updateMessage.ts +2 -0
- package/src/message/events/index.ts +1 -0
- package/src/message/events/onMessageFetched.ts +30 -0
- package/src/message/observers/index.ts +2 -1
- package/src/message/observers/liveMessage.ts +100 -0
- package/src/message/observers/liveMessages.ts +3 -1
- package/src/message/observers/observeMessage.ts +4 -0
- package/src/message/tests/observers/liveMessage.test.ts +248 -0
- package/src/message/{observers/tests → tests/observers}/liveMessages.test.ts +29 -3
- package/src/post/api/deletePost.ts +4 -3
- package/src/post/api/getPost.ts +8 -4
- package/src/post/api/updatePost.ts +6 -1
- package/src/post/tests/api/queryPosts.test.ts +117 -18
- package/src/reaction/api/addReaction.ts +1 -4
- package/src/reaction/api/removeReaction.ts +1 -4
- package/src/reaction/api/tests/addReaction.test.ts +37 -0
- package/src/reaction/api/tests/removeReaction.test.ts +43 -0
- package/src/user/api/getUser.ts +32 -5
- package/src/user/api/getUsers.ts +3 -0
- package/src/user/api/queryUsers.ts +27 -5
- package/src/user/api/tests/queryUsers.test.ts +124 -0
- package/src/user/api/updateUser.ts +3 -0
- package/src/user/events/index.ts +1 -0
- package/src/user/events/onUserFetched.ts +19 -0
- package/src/user/observers/index.ts +1 -0
- package/src/user/observers/liveUser.ts +89 -0
- package/src/user/observers/observeUser.ts +2 -0
- package/src/user/tests/api/getUser.test.ts +112 -0
- package/src/user/tests/observers/liveUser.test.ts +224 -0
- package/src/utils/constants.ts +5 -0
- package/src/utils/tests/dummy/channel.ts +43 -0
- package/src/utils/tests/dummy/message.ts +16 -2
- package/src/utils/tests/dummy/post.ts +26 -3
- package/src/utils/tests/dummy/user.ts +11 -0
- package/dist/channel/tests/utils/prepareChannelPayload.test.d.ts.map +0 -1
- package/dist/message/observers/tests/liveMessages.test.d.ts.map +0 -1
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { ASCApiError } from '~/core/errors';
|
|
2
|
+
import { disableCache, enableCache } from '~/cache/api';
|
|
3
|
+
import { LIVE_OBJECT_ENABLE_CACHE_MESSAGE } from '~/utils/constants';
|
|
4
|
+
|
|
5
|
+
import { liveUser } from '../../observers/liveUser';
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
pause,
|
|
9
|
+
client,
|
|
10
|
+
connectClient,
|
|
11
|
+
disconnectClient,
|
|
12
|
+
userQueryResponse,
|
|
13
|
+
user11 as defaultUser,
|
|
14
|
+
} from '~/utils/tests';
|
|
15
|
+
|
|
16
|
+
const getSnapshot = () => {
|
|
17
|
+
return {
|
|
18
|
+
loading: true,
|
|
19
|
+
error: undefined as any,
|
|
20
|
+
data: undefined as undefined | Amity.User,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
describe('liveUser', () => {
|
|
25
|
+
beforeAll(async () => {
|
|
26
|
+
await connectClient();
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
afterAll(async () => {
|
|
30
|
+
await disconnectClient();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
beforeEach(async () => {
|
|
34
|
+
enableCache();
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
afterEach(disableCache);
|
|
38
|
+
|
|
39
|
+
test('it should show user if cache not enabled', () => {
|
|
40
|
+
/*
|
|
41
|
+
* NOTE: at the time of writing this test cache is diabled by default, but
|
|
42
|
+
* there is a proposal to enable cache by default. So I'm disabling cache
|
|
43
|
+
* here to ensure cache is disabled
|
|
44
|
+
*/
|
|
45
|
+
disableCache();
|
|
46
|
+
|
|
47
|
+
const callback = jest.fn();
|
|
48
|
+
jest.spyOn(global.console, 'log');
|
|
49
|
+
client.http.get = jest.fn();
|
|
50
|
+
|
|
51
|
+
// call liveUser check if mocked console get's called with the correct
|
|
52
|
+
// user
|
|
53
|
+
client.use();
|
|
54
|
+
liveUser(defaultUser.userId, callback);
|
|
55
|
+
|
|
56
|
+
expect(console.log).toBeCalledWith(LIVE_OBJECT_ENABLE_CACHE_MESSAGE);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
test('it should return user live object', async () => {
|
|
60
|
+
const snapshot = getSnapshot();
|
|
61
|
+
|
|
62
|
+
// mock response of queryUsers and validate
|
|
63
|
+
const callback = jest.fn();
|
|
64
|
+
client.http.get = jest.fn().mockResolvedValue(userQueryResponse);
|
|
65
|
+
|
|
66
|
+
liveUser(defaultUser.userId, callback);
|
|
67
|
+
|
|
68
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
69
|
+
|
|
70
|
+
// check if cache data returned (should be empty)
|
|
71
|
+
expect(callback).toHaveBeenCalledWith(expect.objectContaining(snapshot));
|
|
72
|
+
|
|
73
|
+
await pause();
|
|
74
|
+
|
|
75
|
+
expect(callback).toHaveBeenCalledTimes(2);
|
|
76
|
+
|
|
77
|
+
snapshot.loading = false;
|
|
78
|
+
snapshot.data = defaultUser;
|
|
79
|
+
|
|
80
|
+
expect(callback).toHaveBeenCalledWith(expect.objectContaining(snapshot));
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
test('it should return error on api failure', async () => {
|
|
84
|
+
const snapshot = getSnapshot();
|
|
85
|
+
const error = new ASCApiError(
|
|
86
|
+
'server error!',
|
|
87
|
+
Amity.ServerError.ITEM_NOT_FOUND,
|
|
88
|
+
Amity.ErrorLevel.ERROR,
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
// mock response of queryUsers and validate
|
|
92
|
+
const callback = jest.fn();
|
|
93
|
+
client.http.get = jest.fn().mockRejectedValue(error);
|
|
94
|
+
|
|
95
|
+
liveUser(defaultUser.userId, callback);
|
|
96
|
+
|
|
97
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
98
|
+
|
|
99
|
+
// check if cache data returned (should be empty)
|
|
100
|
+
expect(callback).toHaveBeenCalledWith(expect.objectContaining(snapshot));
|
|
101
|
+
|
|
102
|
+
await pause();
|
|
103
|
+
|
|
104
|
+
expect(callback).toHaveBeenCalledTimes(2);
|
|
105
|
+
|
|
106
|
+
snapshot.error = error;
|
|
107
|
+
snapshot.loading = false;
|
|
108
|
+
expect(callback).toHaveBeenLastCalledWith(expect.objectContaining(snapshot));
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
test('it should terminate updates on api failure', async () => {
|
|
112
|
+
const snapshot = getSnapshot();
|
|
113
|
+
const error = new ASCApiError(
|
|
114
|
+
'server error!',
|
|
115
|
+
Amity.ServerError.ITEM_NOT_FOUND,
|
|
116
|
+
Amity.ErrorLevel.ERROR,
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
// mock response of queryUsers and validate
|
|
120
|
+
const callback = jest.fn();
|
|
121
|
+
client.http.get = jest.fn().mockRejectedValue(error);
|
|
122
|
+
|
|
123
|
+
liveUser(defaultUser.userId, callback);
|
|
124
|
+
|
|
125
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
126
|
+
|
|
127
|
+
// check if cache data returned (should be empty)
|
|
128
|
+
expect(callback).toHaveBeenCalledWith(expect.objectContaining(snapshot));
|
|
129
|
+
|
|
130
|
+
await pause();
|
|
131
|
+
|
|
132
|
+
expect(callback).toHaveBeenCalledTimes(2);
|
|
133
|
+
|
|
134
|
+
snapshot.error = error;
|
|
135
|
+
snapshot.loading = false;
|
|
136
|
+
expect(callback).toHaveBeenLastCalledWith(expect.objectContaining(snapshot));
|
|
137
|
+
|
|
138
|
+
const updatedAt = new Date(defaultUser?.updatedAt ?? new Date());
|
|
139
|
+
updatedAt.setDate(updatedAt.getDate() + 7);
|
|
140
|
+
|
|
141
|
+
const updatedUser = {
|
|
142
|
+
...defaultUser,
|
|
143
|
+
updatedAt: updatedAt.toISOString(),
|
|
144
|
+
};
|
|
145
|
+
client.emitter.emit('user.updated', { users: [updatedUser], files: [] });
|
|
146
|
+
|
|
147
|
+
delete snapshot.error;
|
|
148
|
+
snapshot.loading = false;
|
|
149
|
+
snapshot.data = updatedUser;
|
|
150
|
+
expect(callback).not.toHaveBeenNthCalledWith(3, expect.objectContaining(snapshot));
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
test('it should not return updates on obtain once!', async () => {
|
|
154
|
+
const snapshot = getSnapshot();
|
|
155
|
+
|
|
156
|
+
// mock response of queryUsers and validate
|
|
157
|
+
const callback = jest.fn();
|
|
158
|
+
client.http.get = jest.fn().mockResolvedValue(userQueryResponse);
|
|
159
|
+
|
|
160
|
+
const unsub = liveUser(defaultUser.userId, callback);
|
|
161
|
+
|
|
162
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
163
|
+
|
|
164
|
+
// check if cache data returned (should be empty)
|
|
165
|
+
expect(callback).toHaveBeenCalledWith(expect.objectContaining(snapshot));
|
|
166
|
+
|
|
167
|
+
await pause();
|
|
168
|
+
|
|
169
|
+
expect(callback).toHaveBeenCalledTimes(2);
|
|
170
|
+
|
|
171
|
+
unsub();
|
|
172
|
+
|
|
173
|
+
const updatedAt = new Date(defaultUser?.updatedAt ?? new Date());
|
|
174
|
+
updatedAt.setDate(updatedAt.getDate() + 7);
|
|
175
|
+
|
|
176
|
+
const updatedUser = {
|
|
177
|
+
...defaultUser,
|
|
178
|
+
updatedAt: updatedAt.toISOString(),
|
|
179
|
+
};
|
|
180
|
+
client.emitter.emit('user.updated', { users: [updatedUser], files: [] });
|
|
181
|
+
|
|
182
|
+
delete snapshot.error;
|
|
183
|
+
snapshot.loading = false;
|
|
184
|
+
snapshot.data = updatedUser;
|
|
185
|
+
expect(callback).not.toHaveBeenNthCalledWith(3, expect.objectContaining(snapshot));
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
const events: [string, keyof Amity.Events][] = [
|
|
189
|
+
['it should return updated user on onFetch', 'user.fetched'],
|
|
190
|
+
['it should return updated user on onUpdate', 'user.updated'],
|
|
191
|
+
['it should return updated user on onDelete', 'user.deleted'],
|
|
192
|
+
['it should return updated user on onFlagged', 'user.flagged'],
|
|
193
|
+
['it should return updated user on onUnflagged', 'user.unflagged'],
|
|
194
|
+
['it should return updated user on onFlagCleared', 'user.flagCleared'],
|
|
195
|
+
];
|
|
196
|
+
|
|
197
|
+
test.each(events)('%s', async (test, event) => {
|
|
198
|
+
const snapshot = getSnapshot();
|
|
199
|
+
|
|
200
|
+
// mock response of queryUsers and validate
|
|
201
|
+
const callback = jest.fn();
|
|
202
|
+
client.http.get = jest.fn().mockResolvedValue(userQueryResponse);
|
|
203
|
+
|
|
204
|
+
liveUser(defaultUser.userId, callback);
|
|
205
|
+
|
|
206
|
+
await pause();
|
|
207
|
+
|
|
208
|
+
expect(callback).toHaveBeenCalledTimes(2);
|
|
209
|
+
|
|
210
|
+
const updatedAt = new Date(defaultUser?.updatedAt ?? new Date());
|
|
211
|
+
updatedAt.setDate(updatedAt.getDate() + 7);
|
|
212
|
+
|
|
213
|
+
const updatedUser = {
|
|
214
|
+
...defaultUser,
|
|
215
|
+
updatedAt: updatedAt.toISOString(),
|
|
216
|
+
};
|
|
217
|
+
client.emitter.emit(event, { users: [updatedUser], files: [] });
|
|
218
|
+
|
|
219
|
+
delete snapshot.error;
|
|
220
|
+
snapshot.loading = false;
|
|
221
|
+
snapshot.data = updatedUser;
|
|
222
|
+
expect(callback).toHaveBeenNthCalledWith(3, expect.objectContaining(snapshot));
|
|
223
|
+
});
|
|
224
|
+
});
|
package/src/utils/constants.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
export const COLLECTION_DEFAULT_PAGINATION_LIMIT = 5;
|
|
2
2
|
export const COLLECTION_DEFAULT_CACHING_POLICY: Amity.QueryPolicy = 'cache_then_server';
|
|
3
3
|
export const ENABLE_CACHE_MESSAGE = 'For using Live Collection feature you need to enable Cache!';
|
|
4
|
+
export const LIVE_OBJECT_ENABLE_CACHE_MESSAGE =
|
|
5
|
+
'For using Live Object feature you need to enable Cache!';
|
|
6
|
+
export const UNSYNCED_OBJECT_CACHED_AT_MESSAGE =
|
|
7
|
+
'Observing unsynced object is not supported by Live Object.';
|
|
8
|
+
export const UNSYNCED_OBJECT_CACHED_AT_VALUE = -5;
|
|
@@ -95,6 +95,39 @@ export const channelUser4: Amity.Membership<'channel'> = {
|
|
|
95
95
|
userId: user13.userId,
|
|
96
96
|
};
|
|
97
97
|
|
|
98
|
+
export const channelUser5: Amity.Membership<'channel'> = {
|
|
99
|
+
isMuted: false,
|
|
100
|
+
createdAt: date,
|
|
101
|
+
muteTimeout: '',
|
|
102
|
+
isBanned: true,
|
|
103
|
+
readToSegment: 1,
|
|
104
|
+
lastActivity: date,
|
|
105
|
+
userId: user13.userId,
|
|
106
|
+
...rolesAndPermissions,
|
|
107
|
+
membership: 'banned',
|
|
108
|
+
lastMentionedSegment: 0,
|
|
109
|
+
channelId: channel11.channelId,
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
export const channelUser6: Amity.Membership<'channel'> = {
|
|
113
|
+
isMuted: true,
|
|
114
|
+
createdAt: date,
|
|
115
|
+
muteTimeout: '',
|
|
116
|
+
isBanned: true,
|
|
117
|
+
readToSegment: 1,
|
|
118
|
+
lastActivity: date,
|
|
119
|
+
userId: 'test',
|
|
120
|
+
...rolesAndPermissions,
|
|
121
|
+
membership: 'banned',
|
|
122
|
+
lastMentionedSegment: 0,
|
|
123
|
+
channelId: channel11.channelId,
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
export const channelUser7: Amity.Membership<'channel'> = {
|
|
127
|
+
...channelUser3,
|
|
128
|
+
membership: 'member',
|
|
129
|
+
};
|
|
130
|
+
|
|
98
131
|
export const channelQueryResponse = {
|
|
99
132
|
data: {
|
|
100
133
|
channels: [channel11, channel12],
|
|
@@ -134,3 +167,13 @@ export const channelUserQueryResponsePage2 = {
|
|
|
134
167
|
...mockPage,
|
|
135
168
|
},
|
|
136
169
|
};
|
|
170
|
+
|
|
171
|
+
export const channelUserQueryResponsePage3 = {
|
|
172
|
+
data: {
|
|
173
|
+
channels: [channel11],
|
|
174
|
+
channelUsers: [channelUser7, channelUser6],
|
|
175
|
+
users: [],
|
|
176
|
+
files: [],
|
|
177
|
+
...mockPage,
|
|
178
|
+
},
|
|
179
|
+
};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { date, channel11, user11 } from '.';
|
|
2
2
|
|
|
3
|
-
export const
|
|
3
|
+
export const message11: Amity.Message = {
|
|
4
|
+
fileId: null,
|
|
5
|
+
type: 'text',
|
|
4
6
|
reactions: {},
|
|
5
7
|
editedAt: date,
|
|
6
8
|
createdAt: date,
|
|
@@ -15,7 +17,19 @@ export const message: Amity.Message = {
|
|
|
15
17
|
|
|
16
18
|
export const messages = {
|
|
17
19
|
channelId: 'channelId',
|
|
18
|
-
page1: [
|
|
20
|
+
page1: [message11.messageId, 'messageId12', 'messageId13'],
|
|
19
21
|
page2: ['messageId21', 'messageId22', 'messageId23'],
|
|
20
22
|
page3: ['messageId31', 'messageId32', 'messageId33'],
|
|
21
23
|
};
|
|
24
|
+
|
|
25
|
+
export const messageQueryResponse = {
|
|
26
|
+
data: {
|
|
27
|
+
messages: [message11],
|
|
28
|
+
files: [],
|
|
29
|
+
users: [],
|
|
30
|
+
paging: {
|
|
31
|
+
previous: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
32
|
+
next: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { encodeJson } from '..';
|
|
1
2
|
import { user11, date } from '.';
|
|
2
3
|
|
|
3
|
-
export const
|
|
4
|
+
export const post11: Amity.Post = {
|
|
4
5
|
path: '',
|
|
5
6
|
feedId: '',
|
|
6
7
|
children: [],
|
|
@@ -15,17 +16,39 @@ export const post1: Amity.Post = {
|
|
|
15
16
|
postId: 'postId11',
|
|
16
17
|
targetType: 'user',
|
|
17
18
|
parentId: 'postId12',
|
|
18
|
-
data: { text: '
|
|
19
|
+
data: { text: 'post11' },
|
|
19
20
|
targetId: user11.userId,
|
|
20
21
|
hasFlaggedComment: false,
|
|
21
22
|
hasFlaggedChildren: false,
|
|
22
23
|
postedUserId: user11.userId,
|
|
23
24
|
};
|
|
24
25
|
|
|
26
|
+
export const post12: Amity.Post = {
|
|
27
|
+
...post11,
|
|
28
|
+
postId: 'post12',
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const post13: Amity.Post = {
|
|
32
|
+
...post11,
|
|
33
|
+
postId: 'post13',
|
|
34
|
+
};
|
|
35
|
+
|
|
25
36
|
export const posts = {
|
|
26
37
|
targetId: user11.userId,
|
|
27
38
|
targetType: 'user' as Amity.PostTargetType,
|
|
28
|
-
page1: [
|
|
39
|
+
page1: [post11.postId, post12.postId, post13.postId],
|
|
29
40
|
page2: ['postId21', 'postId22', 'postId23'],
|
|
30
41
|
page3: ['postId31', 'postId32', 'postId33'],
|
|
31
42
|
};
|
|
43
|
+
|
|
44
|
+
const nextPage = encodeJson({ before: post13.postId, limit: 10 });
|
|
45
|
+
|
|
46
|
+
export const postQueryResponse = {
|
|
47
|
+
data: {
|
|
48
|
+
posts: [post11, post12, post13],
|
|
49
|
+
files: [],
|
|
50
|
+
paging: {
|
|
51
|
+
next: nextPage,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
};
|
|
@@ -24,3 +24,14 @@ export const user14: Amity.User = {
|
|
|
24
24
|
...user11,
|
|
25
25
|
userId: 'user4',
|
|
26
26
|
};
|
|
27
|
+
|
|
28
|
+
export const userQueryResponse = {
|
|
29
|
+
data: {
|
|
30
|
+
users: [user11, user12],
|
|
31
|
+
files: [],
|
|
32
|
+
paging: {
|
|
33
|
+
previous: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
34
|
+
next: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prepareChannelPayload.test.d.ts","sourceRoot":"","sources":["../../../../src/channel/tests/utils/prepareChannelPayload.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"liveMessages.test.d.ts","sourceRoot":"","sources":["../../../../src/message/observers/tests/liveMessages.test.ts"],"names":[],"mappings":""}
|