Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 24 additions & 27 deletions src/message/__tests__/messageActionSheet-test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// @flow strict-local
import deepFreeze from 'deep-freeze';
import { HOME_NARROW } from '../../utils/narrow';
import { streamNameOfStreamMessage } from '../../utils/recipient';

import * as eg from '../../__tests__/lib/exampleData';
import { constructMessageActionButtons, constructHeaderActionButtons } from '../messageActionSheet';
Expand All @@ -18,6 +19,8 @@ const baseBackgroundData = deepFreeze({
twentyFourHourTime: false,
});

const buttonTitles = buttons => buttons.map(button => button.title);

describe('constructActionButtons', () => {
const narrow = deepFreeze(HOME_NARROW);

Expand All @@ -29,7 +32,7 @@ describe('constructActionButtons', () => {
message,
narrow,
});
expect(buttons).toContain('starMessage');
expect(buttonTitles(buttons)).toContain('Star message');
});

test('show unstar message option if message is starred', () => {
Expand All @@ -40,7 +43,7 @@ describe('constructActionButtons', () => {
message,
narrow,
});
expect(buttons).toContain('unstarMessage');
expect(buttonTitles(buttons)).toContain('Unstar message');
});

test('show reactions option if message is has at least one reaction', () => {
Expand All @@ -49,72 +52,66 @@ describe('constructActionButtons', () => {
message: eg.streamMessage({ reactions: [eg.unicodeEmojiReaction] }),
narrow,
});
expect(buttons).toContain('showReactions');
expect(buttonTitles(buttons)).toContain('See who reacted');
});
});

describe('constructHeaderActionButtons', () => {
const narrow = deepFreeze(HOME_NARROW);

test('show Unmute topic option if topic is muted', () => {
const mute = deepFreeze([['electron issues', 'issue #556']]);
const message = eg.streamMessage({
display_recipient: 'electron issues',
subject: 'issue #556',
});
const buttons = constructHeaderActionButtons({
backgroundData: { ...baseBackgroundData, mute },
message,
narrow,
stream: 'electron issues',
topic: 'issue #556',
});
expect(buttons).toContain('unmuteTopic');
expect(buttonTitles(buttons)).toContain('Unmute topic');
});

test('show mute topic option if topic is not muted', () => {
const buttons = constructHeaderActionButtons({
backgroundData: { ...baseBackgroundData, mute: [] },
message: eg.streamMessage(),
narrow,
stream: streamNameOfStreamMessage(eg.streamMessage()),
topic: eg.streamMessage().subject,
});
expect(buttons).toContain('muteTopic');
expect(buttonTitles(buttons)).toContain('Mute topic');
});

test('show Unmute stream option if stream is not in home view', () => {
const subscriptions = [{ ...eg.subscription, in_home_view: false }];
const buttons = constructHeaderActionButtons({
backgroundData: { ...baseBackgroundData, subscriptions },
message: eg.streamMessage(),
narrow,
stream: streamNameOfStreamMessage(eg.streamMessage()),
topic: eg.streamMessage().subject,
});
expect(buttons).toContain('unmuteStream');
expect(buttonTitles(buttons)).toContain('Unmute stream');
});

test('show mute stream option if stream is in home view', () => {
const subscriptions = [{ ...eg.subscription, in_home_view: true }];
const buttons = constructHeaderActionButtons({
backgroundData: { ...baseBackgroundData, subscriptions },
message: eg.streamMessage(),
narrow,
stream: streamNameOfStreamMessage(eg.streamMessage()),
topic: eg.streamMessage().subject,
});
expect(buttons).toContain('muteStream');
expect(buttonTitles(buttons)).toContain('Mute stream');
});

test('show delete topic option if current user is an admin', () => {
const ownUser = { ...eg.selfUser, is_admin: true };
const buttons = constructHeaderActionButtons({
backgroundData: { ...baseBackgroundData, ownUser },
message: eg.streamMessage(),
narrow,
stream: streamNameOfStreamMessage(eg.streamMessage()),
topic: eg.streamMessage().subject,
});
expect(buttons).toContain('deleteTopic');
expect(buttonTitles(buttons)).toContain('Delete topic');
});

test('do not show delete topic option if current user is not an admin', () => {
const buttons = constructHeaderActionButtons({
backgroundData: baseBackgroundData,
message: eg.streamMessage(),
narrow,
stream: streamNameOfStreamMessage(eg.streamMessage()),
topic: eg.streamMessage().subject,
});
expect(buttons).not.toContain('deleteTopic');
expect(buttonTitles(buttons)).not.toContain('Delete topic');
});
});
Loading