mattermost-mobile/detox/e2e/test/notifications/channel_notification_preference.e2e.js
Daniel Espino García 4c8594d330
Add linter rules for import order and type member delimiters (#5514)
* Add linter rules for import order and type member delimiters

* Remove unneeded group

* Group all app/* imports before the internal imports

* Move app/ imports before parent imports

* Separate @node_modules imports into a different group

* Substitute app paths by aliases

* Fix @node_modules import order and add test related modules

* Add aliases for types and test, and group import types
2021-07-23 11:06:04 +02:00

140 lines
5.3 KiB
JavaScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
// *******************************************************************
// - [#] indicates a test step (e.g. # Go to a screen)
// - [*] indicates an assertion (e.g. * Check the title)
// - Use element testID when selecting an element. Create one if none.
// *******************************************************************
import {Setup} from '@support/server_api';
import {
ChannelInfoScreen,
ChannelNotificationPreferenceScreen,
ChannelScreen,
MoreDirectMessagesScreen,
} from '@support/ui/screen';
import {isAndroid} from '@support/utils';
describe('Channel Notification Preference', () => {
let testChannel;
beforeAll(async () => {
const {user, channel} = await Setup.apiInit();
testChannel = channel;
// # Open channel screen
await ChannelScreen.open(user);
});
beforeEach(async () => {
// # Go to channel
await ChannelScreen.goToChannel(testChannel.display_name);
});
afterAll(async () => {
await ChannelScreen.logout();
});
afterEach(async () => {
// # Close channel info screen
await ChannelInfoScreen.close();
});
it('MM-T3375_1 should display Mobile Notifications option for non-DM Channels', async () => {
// # Open on notification preference screen
await ChannelInfoScreen.open();
await ChannelNotificationPreferenceScreen.open();
const {
titleText,
headerText,
optionDefaultText,
optionAllText,
optionMentionsText,
optionNeverText,
} = ChannelNotificationPreferenceScreen;
// * Verify title, header, and options
await expect(element(by.text(titleText))).toBeVisible();
await expect(element(by.text(isAndroid() ? headerText : headerText.toUpperCase()))).toBeVisible();
await expect(element(by.text(`${optionDefaultText} (Mentions)`))).toBeVisible();
await expect(element(by.text(optionAllText))).toBeVisible();
await expect(element(by.text(optionMentionsText))).toBeVisible();
await expect(element(by.text(optionNeverText))).toBeVisible();
// # Tap on back button
ChannelNotificationPreferenceScreen.back();
});
it('MM-T3375_2 should not display Mobile Notifications option for DM Channel', async () => {
// # Open more direct messages screen
await ChannelScreen.openMainSidebar();
await MoreDirectMessagesScreen.open();
const {
getUserAtIndex,
startButton,
} = MoreDirectMessagesScreen;
// # Select 1 profile
await getUserAtIndex(0).tap();
// # Create a DM with selected profile
await startButton.tap();
// # Open channel info screen
await ChannelInfoScreen.open();
// * Verify Mobile Notifications is not displayed
await expect(ChannelInfoScreen.notificationPreferenceAction).not.toBeVisible();
});
it('MM-T3377 should be able to select For all activity option and display All next to Mobile Notifications', async () => {
// # Open on notification preference screen
await ChannelInfoScreen.open();
await ChannelNotificationPreferenceScreen.open();
// # Tap on For all activity option
await element(by.text(ChannelNotificationPreferenceScreen.optionAllText)).tap();
// # Tap on back button
ChannelNotificationPreferenceScreen.back();
// * Verify notification level All abbreviation
await ChannelInfoScreen.toBeVisible();
await expect(element(by.id(ChannelInfoScreen.testID.notificationPreferenceAction).withDescendant(by.text('All')))).toBeVisible();
});
it('MM-T3378 should be able to select Only mentions and direct messages option and display Mentions next to Mobile Notifications', async () => {
// # Open on notification preference screen
await ChannelInfoScreen.open();
await ChannelNotificationPreferenceScreen.open();
// # Tap on For all activity option
await element(by.text(ChannelNotificationPreferenceScreen.optionMentionsText)).tap();
// # Tap on back button
ChannelNotificationPreferenceScreen.back();
// * Verify notification level Mentions abbreviation
await ChannelInfoScreen.toBeVisible();
await expect(element(by.id(ChannelInfoScreen.testID.notificationPreferenceAction).withDescendant(by.text('Mentions')))).toBeVisible();
});
it('MM-T3379 should be able to select Never option and display Never next to Mobile Notifications', async () => {
// # Open on notification preference screen
await ChannelInfoScreen.open();
await ChannelNotificationPreferenceScreen.open();
// # Tap on For all activity option
await element(by.text(ChannelNotificationPreferenceScreen.optionNeverText)).tap();
// # Tap on back button
ChannelNotificationPreferenceScreen.back();
// * Verify notification level Never abbreviation
await ChannelInfoScreen.toBeVisible();
await expect(element(by.id(ChannelInfoScreen.testID.notificationPreferenceAction).withDescendant(by.text('Never')))).toBeVisible();
});
});