|
1 |
| -import chai from 'chai'; |
| 1 | +import chai, { use } from 'chai'; |
2 | 2 | import { v4 as uuidv4 } from 'uuid';
|
3 | 3 |
|
4 | 4 | import { generateChannel } from './test-utils/generateChannel';
|
@@ -208,6 +208,53 @@ describe('Channel _handleChannelEvent', function () {
|
208 | 208 | channel.initialized = true;
|
209 | 209 | });
|
210 | 210 |
|
| 211 | + it('member.updated/member.added are being handled properly (ChannelState.membership & ChannelState.members)', () => { |
| 212 | + expect(channel.state.members).to.be.empty; |
| 213 | + expect(channel.state.membership).to.be.empty; |
| 214 | + |
| 215 | + const currentMember = generateMember({ |
| 216 | + user, |
| 217 | + pinned_at: new Date().toISOString(), |
| 218 | + archived_at: new Date().toISOString(), |
| 219 | + }); |
| 220 | + |
| 221 | + const otherMember = generateMember({ |
| 222 | + user: { id: 'user-other' }, |
| 223 | + }); |
| 224 | + |
| 225 | + channel._handleChannelEvent({ |
| 226 | + type: 'member.added', |
| 227 | + user, |
| 228 | + member: currentMember, |
| 229 | + }); |
| 230 | + |
| 231 | + expect(channel.state.members).to.have.property(user.id); |
| 232 | + expect(channel.state.members[user.id]).to.deep.equal(currentMember); |
| 233 | + expect(channel.state.membership).to.deep.equal(currentMember); |
| 234 | + |
| 235 | + channel._handleChannelEvent({ |
| 236 | + type: 'member.added', |
| 237 | + user, |
| 238 | + member: otherMember, |
| 239 | + }); |
| 240 | + |
| 241 | + expect(channel.state.members).to.have.keys([user.id, otherMember.user.id]); |
| 242 | + expect(channel.state.members[otherMember.user.id]).to.deep.equal(otherMember); |
| 243 | + expect(channel.state.members[user.id]).to.deep.equal(currentMember); |
| 244 | + expect(channel.state.membership).to.deep.equal(currentMember); |
| 245 | + |
| 246 | + const currentMemberUpdated = generateMember({ user, pinned_at: null, archived_at: null }); |
| 247 | + |
| 248 | + channel._handleChannelEvent({ |
| 249 | + type: 'member.updated', |
| 250 | + user, |
| 251 | + member: currentMemberUpdated, |
| 252 | + }); |
| 253 | + |
| 254 | + expect(channel.state.membership).to.not.have.keys(['pinned_at', 'archived_at']); |
| 255 | + expect(channel.state.membership).to.equal(channel.state.members[user.id]); |
| 256 | + }); |
| 257 | + |
211 | 258 | it('message.new does not reset the unreadCount for current user messages', function () {
|
212 | 259 | channel.state.unreadCount = 100;
|
213 | 260 | channel._handleChannelEvent({
|
|
0 commit comments