Introduce new 'Block request' button in timeline
This commit is contained in:
parent
536dd0c7b0
commit
703bb8a3a3
22 changed files with 1088 additions and 157 deletions
217
ts/test-both/groups/message_merge_test.ts
Normal file
217
ts/test-both/groups/message_merge_test.ts
Normal file
|
@ -0,0 +1,217 @@
|
|||
// Copyright 2022 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import { assert } from 'chai';
|
||||
|
||||
import { UUID } from '../../types/UUID';
|
||||
import {
|
||||
_isGroupChangeMessageBounceable,
|
||||
_mergeGroupChangeMessages,
|
||||
} from '../../groups';
|
||||
|
||||
describe('group message merging', () => {
|
||||
const defaultMessage = {
|
||||
id: UUID.generate().toString(),
|
||||
conversationId: UUID.generate().toString(),
|
||||
timestamp: Date.now(),
|
||||
sent_at: Date.now(),
|
||||
received_at: Date.now(),
|
||||
};
|
||||
const uuid = UUID.generate().toString();
|
||||
|
||||
describe('_isGroupChangeMessageBounceable', () => {
|
||||
it('should return true for admin approval add', () => {
|
||||
assert.isTrue(
|
||||
_isGroupChangeMessageBounceable({
|
||||
...defaultMessage,
|
||||
type: 'group-v2-change',
|
||||
groupV2Change: {
|
||||
details: [
|
||||
{
|
||||
type: 'admin-approval-add-one',
|
||||
uuid,
|
||||
},
|
||||
],
|
||||
},
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
it('should return true for bounce message', () => {
|
||||
assert.isTrue(
|
||||
_isGroupChangeMessageBounceable({
|
||||
...defaultMessage,
|
||||
type: 'group-v2-change',
|
||||
groupV2Change: {
|
||||
details: [
|
||||
{
|
||||
type: 'admin-approval-bounce',
|
||||
times: 1,
|
||||
isApprovalPending: true,
|
||||
uuid,
|
||||
},
|
||||
],
|
||||
},
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
it('should return false otherwise', () => {
|
||||
assert.isFalse(
|
||||
_isGroupChangeMessageBounceable({
|
||||
...defaultMessage,
|
||||
type: 'group-v2-change',
|
||||
groupV2Change: {
|
||||
details: [
|
||||
{
|
||||
type: 'admin-approval-remove-one',
|
||||
uuid,
|
||||
},
|
||||
],
|
||||
},
|
||||
})
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('_mergeGroupChangeMessages', () => {
|
||||
const add = {
|
||||
...defaultMessage,
|
||||
type: 'group-v2-change' as const,
|
||||
groupV2Change: {
|
||||
details: [
|
||||
{
|
||||
type: 'admin-approval-add-one' as const,
|
||||
uuid,
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
const remove = {
|
||||
...defaultMessage,
|
||||
type: 'group-v2-change' as const,
|
||||
groupV2Change: {
|
||||
details: [
|
||||
{
|
||||
type: 'admin-approval-remove-one' as const,
|
||||
uuid,
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
const addOther = {
|
||||
...defaultMessage,
|
||||
type: 'group-v2-change' as const,
|
||||
groupV2Change: {
|
||||
details: [
|
||||
{
|
||||
type: 'admin-approval-add-one' as const,
|
||||
uuid: UUID.generate().toString(),
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
const removeOther = {
|
||||
...defaultMessage,
|
||||
type: 'group-v2-change' as const,
|
||||
groupV2Change: {
|
||||
details: [
|
||||
{
|
||||
type: 'admin-approval-remove-one' as const,
|
||||
uuid: UUID.generate().toString(),
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
const bounce = {
|
||||
...defaultMessage,
|
||||
type: 'group-v2-change' as const,
|
||||
groupV2Change: {
|
||||
details: [
|
||||
{
|
||||
type: 'admin-approval-bounce' as const,
|
||||
times: 1,
|
||||
isApprovalPending: false,
|
||||
uuid,
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
const bounceAndAdd = {
|
||||
...defaultMessage,
|
||||
type: 'group-v2-change' as const,
|
||||
groupV2Change: {
|
||||
details: [
|
||||
{
|
||||
type: 'admin-approval-bounce' as const,
|
||||
times: 1,
|
||||
isApprovalPending: true,
|
||||
uuid,
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
it('should merge add with remove if uuid matches', () => {
|
||||
assert.deepStrictEqual(
|
||||
_mergeGroupChangeMessages(add, remove)?.groupV2Change?.details,
|
||||
[
|
||||
{
|
||||
isApprovalPending: false,
|
||||
times: 1,
|
||||
type: 'admin-approval-bounce',
|
||||
uuid,
|
||||
},
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
it('should not merge add with remove if uuid does not match', () => {
|
||||
assert.isUndefined(_mergeGroupChangeMessages(add, removeOther));
|
||||
});
|
||||
|
||||
it('should merge bounce with add if uuid matches', () => {
|
||||
assert.deepStrictEqual(
|
||||
_mergeGroupChangeMessages(bounce, add)?.groupV2Change?.details,
|
||||
[
|
||||
{
|
||||
isApprovalPending: true,
|
||||
times: 1,
|
||||
type: 'admin-approval-bounce',
|
||||
uuid,
|
||||
},
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
it('should merge bounce and add with remove if uuid matches', () => {
|
||||
assert.deepStrictEqual(
|
||||
_mergeGroupChangeMessages(bounceAndAdd, remove)?.groupV2Change?.details,
|
||||
[
|
||||
{
|
||||
isApprovalPending: false,
|
||||
times: 2,
|
||||
type: 'admin-approval-bounce',
|
||||
uuid,
|
||||
},
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
it('should not merge bounce with add if uuid does not match', () => {
|
||||
assert.isUndefined(_mergeGroupChangeMessages(bounce, addOther));
|
||||
});
|
||||
|
||||
it('should not merge bounce and add with add', () => {
|
||||
assert.isUndefined(_mergeGroupChangeMessages(bounceAndAdd, add));
|
||||
});
|
||||
|
||||
it('should not merge bounce and add with remove if uuid does not match', () => {
|
||||
assert.isUndefined(_mergeGroupChangeMessages(bounceAndAdd, removeOther));
|
||||
});
|
||||
|
||||
it('should not merge bounce with remove', () => {
|
||||
assert.isUndefined(_mergeGroupChangeMessages(bounce, remove));
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue