62 lines
2 KiB
TypeScript
62 lines
2 KiB
TypeScript
|
// Copyright 2021 Signal Messenger, LLC
|
||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
import { assert } from 'chai';
|
||
|
import * as sinon from 'sinon';
|
||
|
import { times } from 'lodash';
|
||
|
import { v4 as uuid } from 'uuid';
|
||
|
import * as remoteConfig from '../../RemoteConfig';
|
||
|
|
||
|
import { isConversationTooBigToRing } from '../../conversations/isConversationTooBigToRing';
|
||
|
|
||
|
describe('isConversationTooBigToRing', () => {
|
||
|
let sinonSandbox: sinon.SinonSandbox;
|
||
|
let getMaxGroupCallRingSizeStub: sinon.SinonStub;
|
||
|
|
||
|
beforeEach(() => {
|
||
|
sinonSandbox = sinon.createSandbox();
|
||
|
|
||
|
const getValueStub = sinonSandbox.stub(remoteConfig, 'getValue');
|
||
|
getMaxGroupCallRingSizeStub = getValueStub.withArgs(
|
||
|
'global.calling.maxGroupCallRingSize'
|
||
|
);
|
||
|
});
|
||
|
|
||
|
const fakeMemberships = (count: number) =>
|
||
|
times(count, () => ({ conversationId: uuid(), isAdmin: false }));
|
||
|
|
||
|
afterEach(() => {
|
||
|
sinonSandbox.restore();
|
||
|
});
|
||
|
|
||
|
it('returns false if there are no memberships (i.e., for a direct conversation)', () => {
|
||
|
assert.isFalse(isConversationTooBigToRing({}));
|
||
|
assert.isFalse(isConversationTooBigToRing({ memberships: [] }));
|
||
|
});
|
||
|
|
||
|
const textMaximum = (max: number): void => {
|
||
|
for (let count = 1; count < max; count += 1) {
|
||
|
const memberships = fakeMemberships(count);
|
||
|
assert.isFalse(isConversationTooBigToRing({ memberships }));
|
||
|
}
|
||
|
for (let count = max; count < max + 5; count += 1) {
|
||
|
const memberships = fakeMemberships(count);
|
||
|
assert.isTrue(isConversationTooBigToRing({ memberships }));
|
||
|
}
|
||
|
};
|
||
|
|
||
|
it('returns whether there are 16 or more people in the group, if there is nothing in remote config', () => {
|
||
|
textMaximum(16);
|
||
|
});
|
||
|
|
||
|
it('returns whether there are 16 or more people in the group, if the remote config value is bogus', () => {
|
||
|
getMaxGroupCallRingSizeStub.returns('uh oh');
|
||
|
textMaximum(16);
|
||
|
});
|
||
|
|
||
|
it('returns whether there are 9 or more people in the group, if the remote config value is 9', () => {
|
||
|
getMaxGroupCallRingSizeStub.returns('9');
|
||
|
textMaximum(9);
|
||
|
});
|
||
|
});
|