telegram-tt/tests/messageLayout.test.tsx
Alexander Zinchuk 3afcde3217 Initial commit
2021-04-09 14:11:51 +03:00

429 lines
15 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { getDispatch } from '../src/lib/teact/teactn';
import { AFTER_ALL_DELAY, BEFORE_ALL_TIMEOUT, REQUEST_DELAY } from './config';
import initApp from './initApp';
import { getMessageElement } from './helpers';
import {
expectAvatar,
expectNoAvatar,
expectAdminTitle,
expectNoAdminTitle,
expectFocusButton,
expectNoFocusButton,
expectIncoming,
expectOutgoing,
expectInteractiveSender,
expectNoSender,
expectHiddenSender,
expectThreadTop,
expectReply,
expectNoReply,
expectSingleGroup,
expectInGroup,
expectAsForwarded,
expectNotAsForwarded,
expectViaBot,
expectForwardButton,
expectCommentButton,
expectNoCommentButton,
expectNoSignature,
expectSignature,
} from './assertions';
import { pause } from '../src/util/schedulers';
import { LoadMoreDirection } from '../src/types';
describe('Message layout', () => {
beforeAll(async () => {
await initApp();
}, BEFORE_ALL_TIMEOUT);
describe('Saved Messages', () => {
beforeAll(async () => {
getDispatch().openChat({ id: 628495532 });
await pause(REQUEST_DELAY);
}, BEFORE_ALL_TIMEOUT);
afterAll(async () => {
await pause(AFTER_ALL_DELAY);
});
test('Incoming forwarded simple (`isFirstInGroup`, not `isLastInGroup`)', () => {
const messageElement = getMessageElement(2955);
expectIncoming(messageElement);
expectInteractiveSender(messageElement, 314552265);
expectNoAvatar(messageElement);
expectFocusButton(messageElement, -178999811, 2950);
});
test('Incoming forwarded simple (`isLastInGroup`, not `isFirstInGroup`)', () => {
const messageElement = getMessageElement(2956);
expectIncoming(messageElement);
expectNoSender(messageElement);
expectAvatar(messageElement, 314552265);
expectFocusButton(messageElement, -178999811, 2951);
});
test('Outgoing simple (`isFirstInGroup`, `isLastInGroup`)', () => {
const messageElement = getMessageElement(2957);
expectOutgoing(messageElement);
expectNoSender(messageElement);
});
test('Incoming forwarded direct from hidden ', () => {
const messageElement = getMessageElement(2959);
expectIncoming(messageElement);
expectNotAsForwarded(messageElement);
expectHiddenSender(messageElement, 'Mike Ravdonikas');
expectAvatar(messageElement, undefined, 'MR');
expectNoFocusButton(messageElement);
});
test('Incoming forwarded from group from hidden ', () => {
const messageElement = getMessageElement(2958);
expectIncoming(messageElement);
expectNotAsForwarded(messageElement);
expectHiddenSender(messageElement, 'Антон');
expectAvatar(messageElement, undefined, 'А');
expectFocusButton(messageElement, -178999811, 2935);
});
test('Incoming forwarded via bot', () => {
const messageElement = getMessageElement(2960);
expectIncoming(messageElement);
expectNotAsForwarded(messageElement);
expectInteractiveSender(messageElement, 408193052);
expectViaBot(messageElement, 140267078);
expectAvatar(messageElement, 408193052);
expectFocusButton(messageElement, -178999811, 2934);
});
test('Outgoing forwarded via bot', () => {
const messageElement = getMessageElement(2964);
expectOutgoing(messageElement);
expectNotAsForwarded(messageElement);
expect(messageElement.querySelector('.content-inner .message-title')!.childElementCount).toEqual(2);
expectViaBot(messageElement, 140267078);
});
test('Incoming forwarded channel post', () => {
const messageElement = getMessageElement(2965);
expectIncoming(messageElement);
expectNotAsForwarded(messageElement);
expectInteractiveSender(messageElement, -1038976893);
expectAvatar(messageElement, -1038976893);
expectFocusButton(messageElement, -1038976893, 192);
});
});
describe('Group', () => {
beforeAll(async () => {
getDispatch().openChat({ id: -178999811 });
await pause(REQUEST_DELAY);
getDispatch().loadViewportMessages({ direction: LoadMoreDirection.Backwards });
await pause(REQUEST_DELAY);
}, BEFORE_ALL_TIMEOUT * 2);
afterAll(async () => {
await pause(AFTER_ALL_DELAY);
});
test('Incoming simple (`isFirstInGroup`, not `isLastInGroup`)', () => {
const messageElement = getMessageElement(2945);
expectIncoming(messageElement);
expectInteractiveSender(messageElement, 3718260);
expectNoAvatar(messageElement);
});
test('Incoming simple (`isLastInGroup`, not `isFirstInGroup`)', () => {
const messageElement = getMessageElement(2946);
expectIncoming(messageElement);
expectNoSender(messageElement);
expectAvatar(messageElement, 3718260);
});
test('Outgoing simple (`isFirstInGroup`, `isLastInGroup`)', () => {
const messageElement = getMessageElement(2943);
expectOutgoing(messageElement);
expectNoSender(messageElement);
});
test('Incoming forwarded (not `isLastInGroup`)', () => {
const messageElement = getMessageElement(2950);
expectIncoming(messageElement);
expectAsForwarded(messageElement);
expectInteractiveSender(messageElement, 314552265);
expectNoAvatar(messageElement);
});
test('Incoming forwarded (`isLastInGroup`)', () => {
const messageElement = getMessageElement(2951);
expectIncoming(messageElement);
expectAsForwarded(messageElement);
expectInteractiveSender(messageElement, 314552265);
expectAvatar(messageElement, 3718260);
});
test('Outgoing forwarded', () => {
const messageElement = getMessageElement(2954);
expectOutgoing(messageElement);
expectAsForwarded(messageElement);
expectInteractiveSender(messageElement, 3718260);
});
test('Incoming forwarded from hidden', () => {
const messageElement = getMessageElement(2935);
expectIncoming(messageElement);
expectAsForwarded(messageElement);
expectHiddenSender(messageElement, 'Антон');
expectAvatar(messageElement, 3718260);
});
test('Outgoing forwarded from hidden', () => {
const messageElement = getMessageElement(2936);
expectOutgoing(messageElement);
expectAsForwarded(messageElement);
expectHiddenSender(messageElement, 'Антон');
});
test('Incoming forwarded via bot', () => {
const messageElement = getMessageElement(2934);
expectIncoming(messageElement);
expectAsForwarded(messageElement);
expectInteractiveSender(messageElement, 408193052);
expectViaBot(messageElement, 140267078);
expectAvatar(messageElement, 3718260);
});
test('Outgoing forwarded via bot', () => {
const messageElement = getMessageElement(2732);
expectOutgoing(messageElement);
expectAsForwarded(messageElement);
expectInteractiveSender(messageElement, 408193052);
expectViaBot(messageElement, 140267078);
});
test('Incoming forwarded channel post', () => {
const messageElement = getMessageElement(2952);
expectIncoming(messageElement);
expectAsForwarded(messageElement);
expectInteractiveSender(messageElement, -1038976893);
expectAvatar(messageElement, 3718260);
expectFocusButton(messageElement, -1038976893, 192);
});
test('Outgoing forwarded channel post', () => {
const messageElement = getMessageElement(2953);
expectOutgoing(messageElement);
expectAsForwarded(messageElement);
expectInteractiveSender(messageElement, -1038976893);
expectFocusButton(messageElement, -1038976893, 192);
});
});
describe('Channel', () => {
beforeAll(async () => {
getDispatch().openChat({ id: -1386471086 });
await pause(REQUEST_DELAY);
}, BEFORE_ALL_TIMEOUT);
afterAll(async () => {
await pause(AFTER_ALL_DELAY);
});
test('Single post with comments', () => {
const messageElement = getMessageElement(2);
expectIncoming(messageElement);
expectNoSender(messageElement);
expectNoAvatar(messageElement);
expectForwardButton(messageElement);
expectNoAdminTitle(messageElement);
expectSingleGroup(messageElement);
expectCommentButton(messageElement, 4, 2, 2, -1403448678);
expectNoSignature(messageElement);
});
test('Post in group (first)', () => {
const messageElement = getMessageElement(3);
expectIncoming(messageElement);
expectNoSender(messageElement);
expectNoAvatar(messageElement);
expectForwardButton(messageElement);
expectNoAdminTitle(messageElement);
expectInGroup(messageElement);
expectCommentButton(messageElement, 0, 0, 3, -1403448678);
});
test('Post in group (last)', () => {
const messageElement = getMessageElement(4);
expectIncoming(messageElement);
expectNoSender(messageElement);
expectNoAvatar(messageElement);
expectForwardButton(messageElement);
expectNoAdminTitle(messageElement);
expectInGroup(messageElement);
expectCommentButton(messageElement, 0, 0, 4, -1403448678);
});
test('Signed post', () => {
const messageElement = getMessageElement(10);
expectSignature(messageElement, 'Sasha Alejandro');
expectNoSender(messageElement);
expectNoAdminTitle(messageElement);
});
test('Post which was removed from discussion', () => {
const messageElement = getMessageElement(15);
expectNoCommentButton(messageElement);
});
});
describe('Discussion', () => {
beforeAll(async () => {
getDispatch().openChat({ id: -1403448678 });
await pause(REQUEST_DELAY);
}, BEFORE_ALL_TIMEOUT);
afterAll(async () => {
await pause(AFTER_ALL_DELAY);
});
test('Linked channel post', () => {
const messageElement = getMessageElement(14);
expectIncoming(messageElement);
expectNotAsForwarded(messageElement);
expectInteractiveSender(messageElement, -1386471086);
expectNoAvatar(messageElement);
expectFocusButton(messageElement, -1386471086, 3);
expectAdminTitle(messageElement, 'channel');
expectInGroup(messageElement);
});
test('Linked channel post (following previous)', () => {
const messageElement = getMessageElement(15);
expectIncoming(messageElement);
expectNotAsForwarded(messageElement);
expectNoSender(messageElement);
expectAvatar(messageElement, -1386471086);
expectFocusButton(messageElement, -1386471086, 4);
expectNoAdminTitle(messageElement);
expectInGroup(messageElement);
});
test('Incoming forwarded not linked channel post', () => {
const messageElement = getMessageElement(6);
expectIncoming(messageElement);
expectAsForwarded(messageElement);
expectInteractiveSender(messageElement, -1038976893);
expectAvatar(messageElement, 3718260);
expectFocusButton(messageElement, -1038976893, 192);
expectNoAdminTitle(messageElement);
});
test('Incoming simple (`isFirstInGroup`, `isLastInGroup`)', () => {
const messageElement = getMessageElement(4);
expectIncoming(messageElement);
expectInteractiveSender(messageElement, 3718260);
expectAvatar(messageElement, 3718260);
});
test('Outgoing as anonymous (`isFirstInGroup`)', () => {
const messageElement = getMessageElement(11);
expectOutgoing(messageElement);
expectInteractiveSender(messageElement, -1403448678);
});
test('Incoming reply to linked post', () => {
const messageElement = getMessageElement(7);
expectIncoming(messageElement);
expectInteractiveSender(messageElement, 3718260);
expectAvatar(messageElement, 3718260);
expectReply(messageElement, -1386471086);
});
test('Outgoing reply to anonymous post', () => {
const messageElement = getMessageElement(13);
expectOutgoing(messageElement);
expectInteractiveSender(messageElement, -1403448678);
expectReply(messageElement, -1403448678);
});
test('Outgoing reply to linked post (with admin title)', () => {
const messageElement = getMessageElement(42);
expectOutgoing(messageElement);
expectInteractiveSender(messageElement, -1403448678);
expectReply(messageElement, -1386471086);
expectAdminTitle(messageElement, 'Super Name');
expectNoSignature(messageElement);
});
test('Incoming linked channel post (signed)', () => {
const messageElement = getMessageElement(111);
expectIncoming(messageElement);
expectNotAsForwarded(messageElement);
expectInteractiveSender(messageElement, -1386471086);
expectFocusButton(messageElement, -1386471086, 10);
expectAdminTitle(messageElement, 'channel');
expectSignature(messageElement, 'Sasha Alejandro');
});
});
describe('Comment Thread', () => {
beforeAll(async () => {
getDispatch().openChat({ id: -1386471086 });
await pause(REQUEST_DELAY);
getDispatch().openChat({ id: -1403448678, threadId: 2 });
await pause(REQUEST_DELAY);
}, BEFORE_ALL_TIMEOUT * 2);
afterAll(async () => {
await pause(AFTER_ALL_DELAY);
});
test('Original channel post', () => {
const messageElement = getMessageElement(2);
expectIncoming(messageElement);
expectNotAsForwarded(messageElement);
expectInteractiveSender(messageElement, -1386471086);
expectNoAvatar(messageElement);
expectFocusButton(messageElement, -1386471086, 2);
expectAdminTitle(messageElement, 'channel');
expectSingleGroup(messageElement);
expectThreadTop(messageElement);
});
test('Incoming reply to original post', () => {
const messageElement = getMessageElement(7);
expectIncoming(messageElement);
expectInteractiveSender(messageElement, 3718260);
expectAvatar(messageElement, 3718260);
expectNoReply(messageElement);
});
test('Outgoing reply', () => {
const messageElement = getMessageElement(39);
expectOutgoing(messageElement);
expectInteractiveSender(messageElement, -1403448678);
expectNoReply(messageElement);
});
test('Incoming reply to another comment', () => {
const messageElement = getMessageElement(41);
expectIncoming(messageElement);
expectInteractiveSender(messageElement, 3718260);
expectAvatar(messageElement, 3718260);
expectReply(messageElement, -1403448678);
});
test('Outgoing reply (with admin title)', () => {
const messageElement = getMessageElement(42);
expectOutgoing(messageElement);
expectInteractiveSender(messageElement, -1403448678);
expectNoReply(messageElement);
expectAdminTitle(messageElement, 'Super Name');
expectNoSignature(messageElement);
});
});
});