forked from Ivasoft/mattermost-mobile
101 lines
4.3 KiB
TypeScript
101 lines
4.3 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import {
|
|
Alert,
|
|
ProfilePicture,
|
|
} from '@support/ui/component';
|
|
import {HomeScreen} from '@support/ui/screen';
|
|
import {timeouts} from '@support/utils';
|
|
import {expect} from 'detox';
|
|
|
|
class AccountScreen {
|
|
testID = {
|
|
userInfoPrefix: 'account.user_info.',
|
|
customStatusPrefix: 'account.custom_status.',
|
|
accountScreen: 'account.screen',
|
|
userPresenceOption: 'account.user_presence.option',
|
|
setStatusOption: 'account.custom_status.option',
|
|
yourProfileOption: 'account.your_profile.option',
|
|
settingsOption: 'account.settings.option',
|
|
logoutOption: 'account.logout.option',
|
|
onlineUserStatusOption: 'user_status.online.option',
|
|
awayUserStatusOption: 'user_status.away.option',
|
|
dndUserStatusOption: 'user_status.dnd.option',
|
|
offlineUserStatusOption: 'user_status.offline.option',
|
|
customStatusFailureMessage: 'account.custom_status.failure_message',
|
|
customStatusClearButton: 'account.custom_status.clear.button',
|
|
};
|
|
|
|
accountScreen = element(by.id(this.testID.accountScreen));
|
|
userPresenceOption = element(by.id(this.testID.userPresenceOption));
|
|
setStatusOption = element(by.id(this.testID.setStatusOption));
|
|
yourProfileOption = element(by.id(this.testID.yourProfileOption));
|
|
settingsOption = element(by.id(this.testID.settingsOption));
|
|
logoutOption = element(by.id(this.testID.logoutOption));
|
|
onlineUserStatusOption = element(by.id(this.testID.onlineUserStatusOption));
|
|
awayUserStatusOption = element(by.id(this.testID.awayUserStatusOption));
|
|
dndUserStatusOption = element(by.id(this.testID.dndUserStatusOption));
|
|
offlineUserStatusOption = element(by.id(this.testID.offlineUserStatusOption));
|
|
customStatusFailureMessage = element(by.id(this.testID.customStatusFailureMessage));
|
|
customStatusClearButton = element(by.id(this.testID.customStatusClearButton));
|
|
|
|
getUserInfo = (userId: string) => {
|
|
const userInfoTestId = `${this.testID.userInfoPrefix}${userId}`;
|
|
const userInfoProfilePictureMatcher = ProfilePicture.getProfilePictureItemMatcher(this.testID.userInfoPrefix, userId);
|
|
const userInfoUserDisplayNameMatcher = by.id(`${userInfoTestId}.display_name`);
|
|
const userInfoUsernameMatcher = by.id(`${userInfoTestId}.username`);
|
|
|
|
return {
|
|
userInfoProfilePicture: element(userInfoProfilePictureMatcher),
|
|
userInfoUserDisplayName: element(userInfoUserDisplayNameMatcher),
|
|
userInfoUsername: element(userInfoUsernameMatcher),
|
|
};
|
|
};
|
|
|
|
getUserPresenceIndicator = (status: string) => {
|
|
return element(by.id(`user_status.indicator.${status}`)).atIndex(0);
|
|
};
|
|
|
|
getUserPresenceLabel = (status: string) => {
|
|
return element(by.id(`user_status.label.${status}`)).atIndex(0);
|
|
};
|
|
|
|
getCustomStatus = (emojiName: string, duration: string) => {
|
|
const accountCustomStatusEmojiMatcher = by.id(`${this.testID.customStatusPrefix}custom_status_emoji.${emojiName}`);
|
|
const accountCustomStatusTextMatcher = by.id(`${this.testID.customStatusPrefix}custom_status_text`);
|
|
const accountCustomStatusExpiryMatcher = by.id(`${this.testID.customStatusPrefix}custom_status_duration.${duration}.custom_status_expiry`);
|
|
|
|
return {
|
|
accountCustomStatusEmoji: element(accountCustomStatusEmojiMatcher),
|
|
accountCustomStatusText: element(accountCustomStatusTextMatcher),
|
|
accountCustomStatusExpiry: element(accountCustomStatusExpiryMatcher),
|
|
};
|
|
};
|
|
|
|
toBeVisible = async () => {
|
|
await waitFor(this.accountScreen).toExist().withTimeout(timeouts.TEN_SEC);
|
|
|
|
return this.accountScreen;
|
|
};
|
|
|
|
open = async () => {
|
|
// # Open account screen
|
|
await HomeScreen.accountTab.tap();
|
|
|
|
return this.toBeVisible();
|
|
};
|
|
|
|
logout = async (serverDisplayName: string | null = null) => {
|
|
await this.logoutOption.tap();
|
|
if (serverDisplayName) {
|
|
await expect(Alert.logoutTitle(serverDisplayName)).toBeVisible();
|
|
}
|
|
await Alert.logoutButton.tap();
|
|
await expect(this.accountScreen).not.toBeVisible();
|
|
};
|
|
}
|
|
|
|
const accountScreen = new AccountScreen();
|
|
export default accountScreen;
|