112 lines
3.2 KiB
TypeScript
112 lines
3.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 { RowType, _testHeaderText } from '../../../components/ConversationList';
|
|
import { getDefaultConversation } from '../../../test-both/helpers/getDefaultConversation';
|
|
import { DurationInSeconds } from '../../../util/durations';
|
|
|
|
import { LeftPaneSetGroupMetadataHelper } from '../../../components/leftPane/LeftPaneSetGroupMetadataHelper';
|
|
|
|
function getComposeState() {
|
|
return {
|
|
groupAvatar: undefined,
|
|
groupExpireTimer: DurationInSeconds.ZERO,
|
|
groupName: '',
|
|
hasError: false,
|
|
isCreating: false,
|
|
isEditingAvatar: false,
|
|
selectedContacts: [],
|
|
userAvatarData: [],
|
|
};
|
|
}
|
|
|
|
describe('LeftPaneSetGroupMetadataHelper', () => {
|
|
describe('getBackAction', () => {
|
|
it('returns the "show composer" action if a request is not active', () => {
|
|
const showChooseGroupMembers = sinon.fake();
|
|
const helper = new LeftPaneSetGroupMetadataHelper({
|
|
...getComposeState(),
|
|
});
|
|
|
|
assert.strictEqual(
|
|
helper.getBackAction({ showChooseGroupMembers }),
|
|
showChooseGroupMembers
|
|
);
|
|
});
|
|
|
|
it("returns undefined (i.e., you can't go back) if a request is active", () => {
|
|
const helper = new LeftPaneSetGroupMetadataHelper({
|
|
...getComposeState(),
|
|
groupName: 'Foo Bar',
|
|
isCreating: true,
|
|
});
|
|
|
|
assert.isUndefined(
|
|
helper.getBackAction({ showChooseGroupMembers: sinon.fake() })
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('getRowCount', () => {
|
|
it('returns 0 if there are no contacts', () => {
|
|
assert.strictEqual(
|
|
new LeftPaneSetGroupMetadataHelper({
|
|
...getComposeState(),
|
|
}).getRowCount(),
|
|
0
|
|
);
|
|
});
|
|
|
|
it('returns the number of candidate contacts + 2 if there are any', () => {
|
|
assert.strictEqual(
|
|
new LeftPaneSetGroupMetadataHelper({
|
|
...getComposeState(),
|
|
selectedContacts: [
|
|
getDefaultConversation(),
|
|
getDefaultConversation(),
|
|
],
|
|
}).getRowCount(),
|
|
4
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('getRow', () => {
|
|
it('returns undefined if there are no contacts', () => {
|
|
assert.isUndefined(
|
|
new LeftPaneSetGroupMetadataHelper({
|
|
...getComposeState(),
|
|
}).getRow(0)
|
|
);
|
|
});
|
|
|
|
it('returns a header, then the contacts, then a blank space if there are contacts', () => {
|
|
const selectedContacts = [
|
|
getDefaultConversation(),
|
|
getDefaultConversation(),
|
|
];
|
|
const helper = new LeftPaneSetGroupMetadataHelper({
|
|
...getComposeState(),
|
|
selectedContacts,
|
|
});
|
|
|
|
assert.deepEqual(
|
|
_testHeaderText(helper.getRow(0)),
|
|
'icu:setGroupMetadata__members-header'
|
|
);
|
|
assert.deepEqual(helper.getRow(1), {
|
|
type: RowType.Contact,
|
|
contact: selectedContacts[0],
|
|
isClickable: false,
|
|
});
|
|
assert.deepEqual(helper.getRow(2), {
|
|
type: RowType.Contact,
|
|
contact: selectedContacts[1],
|
|
isClickable: false,
|
|
});
|
|
assert.deepEqual(helper.getRow(3), { type: RowType.Blank });
|
|
});
|
|
});
|
|
});
|