// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import {NotificationSettingsScreen} from '@support/ui/screen'; import {timeouts} from '@support/utils'; import {expect} from 'detox'; class MentionNotificationSettingsScreen { testID = { mentionNotificationSettingsScreen: 'mention_notification_settings.screen', backButton: 'screen.back.button', scrollView: 'mention_notification_settings.scroll_view', caseSensitiveFirstNameOptionToggledOff: 'mention_notification_settings.case_sensitive_first_name.option.toggled.false', caseSensitiveFirstNameOptionToggledOn: 'mention_notification_settings.case_sensitive_first_name.option.toggled.true', nonCaseSensitiveUsernameOptionToggledOff: 'mention_notification_settings.non_case_sensitive_username.option.toggled.false', nonCaseSensitiveUsernameOptionToggledOn: 'mention_notification_settings.non_case_sensitive_username.option.toggled.true', channelWideMentionsOptionToggledOff: 'mention_notification_settings.channel_wide_mentions.option.toggled.false', channelWideMentionsOptionToggledOn: 'mention_notification_settings.channel_wide_mentions.option.toggled.true', keywordsInput: 'mention_notification_settings.keywords.input', keywordsInputDescription: 'mention_notification_settings.keywords.input.description', threadsStartParticipateOption: 'mention_notification_settings.threads_start_participate.option', threadsStartParticipateOptionSelected: 'mention_notification_settings.threads_start_participate.option.selected', threadsStartOption: 'mention_notification_settings.threads_start.option', threadsStartOptionSelected: 'mention_notification_settings.threads_start.option.selected', threadsMentionsOption: 'mention_notification_settings.threads_mentions.option', threadsMentionsOptionSelected: 'mention_notification_settings.threads_mentions.option.selected', }; mentionNotificationSettingsScreen = element(by.id(this.testID.mentionNotificationSettingsScreen)); backButton = element(by.id(this.testID.backButton)); scrollView = element(by.id(this.testID.scrollView)); caseSensitiveFirstNameOptionToggledOff = element(by.id(this.testID.caseSensitiveFirstNameOptionToggledOff)); caseSensitiveFirstNameOptionToggledOn = element(by.id(this.testID.caseSensitiveFirstNameOptionToggledOn)); nonCaseSensitiveUsernameOptionToggledOff = element(by.id(this.testID.nonCaseSensitiveUsernameOptionToggledOff)); nonCaseSensitiveUsernameOptionToggledOn = element(by.id(this.testID.nonCaseSensitiveUsernameOptionToggledOn)); channelWideMentionsOptionToggledOff = element(by.id(this.testID.channelWideMentionsOptionToggledOff)); channelWideMentionsOptionToggledOn = element(by.id(this.testID.channelWideMentionsOptionToggledOn)); keywordsInput = element(by.id(this.testID.keywordsInput)); keywordsInputDescription = element(by.id(this.testID.keywordsInputDescription)); threadsStartParticipateOption = element(by.id(this.testID.threadsStartParticipateOption)); threadsStartParticipateOptionSelected = element(by.id(this.testID.threadsStartParticipateOptionSelected)); threadsStartOption = element(by.id(this.testID.threadsStartOption)); threadsStartOptionSelected = element(by.id(this.testID.threadsStartOptionSelected)); threadsMentionsOption = element(by.id(this.testID.threadsMentionsOption)); threadsMentionsOptionSelected = element(by.id(this.testID.threadsMentionsOptionSelected)); toBeVisible = async () => { await waitFor(this.mentionNotificationSettingsScreen).toExist().withTimeout(timeouts.TEN_SEC); return this.mentionNotificationSettingsScreen; }; open = async () => { // # Open mention notification settings screen await NotificationSettingsScreen.mentionsOption.tap(); return this.toBeVisible(); }; back = async () => { await this.backButton.tap(); await expect(this.mentionNotificationSettingsScreen).not.toBeVisible(); }; toggleCaseSensitiveFirstNameOptionOn = async () => { await this.caseSensitiveFirstNameOptionToggledOff.tap(); await expect(this.caseSensitiveFirstNameOptionToggledOn).toBeVisible(); }; toggleCaseSensitiveFirstNameOptionOff = async () => { await this.caseSensitiveFirstNameOptionToggledOn.tap(); await expect(this.caseSensitiveFirstNameOptionToggledOff).toBeVisible(); }; toggleNonCaseSensitiveUsernameOptionOn = async () => { await this.nonCaseSensitiveUsernameOptionToggledOff.tap(); await expect(this.nonCaseSensitiveUsernameOptionToggledOn).toBeVisible(); }; toggleNonCaseSensitiveUsernameOptionOff = async () => { await this.nonCaseSensitiveUsernameOptionToggledOn.tap(); await expect(this.nonCaseSensitiveUsernameOptionToggledOff).toBeVisible(); }; toggleChannelWideMentionsOptionOn = async () => { await this.channelWideMentionsOptionToggledOff.tap(); await expect(this.channelWideMentionsOptionToggledOn).toBeVisible(); }; toggleChannelWideMentionsOptionOff = async () => { await this.channelWideMentionsOptionToggledOn.tap(); await expect(this.channelWideMentionsOptionToggledOff).toBeVisible(); }; } const mentionNotificationSettingsScreen = new MentionNotificationSettingsScreen(); export default mentionNotificationSettingsScreen;