mattermost-mobile/detox/e2e/support/ui/component/autocomplete.js

43 lines
1.7 KiB
JavaScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
class Autocomplete {
testID = {
atMentionItemPrefix: 'autocomplete.at_mention.item.',
channelMentionItemPrefix: 'autocomplete.channel_mention.item.',
autocomplete: 'autocomplete',
atMentionSuggestionList: 'at_mention_suggestion.list',
channelMentionSuggestionList: 'channel_mention_suggestion.list',
dateSuggestion: 'autocomplete.date_suggestion',
emojiSuggestionList: 'emoji_suggestion.list',
slashSuggestionList: 'slash_suggestion.list',
}
autocomplete = element(by.id(this.testID.autocomplete));
atMentionSuggestionList = element(by.id(this.testID.atMentionSuggestionList));
channelMentionSuggestionList = element(by.id(this.testID.channelMentionSuggestionList));
dateSuggestion = element(by.id(this.testID.dateSuggestion));
emojiSuggestionList = element(by.id(this.testID.emojiSuggestionList));
slashSuggestionList = element(by.id(this.testID.slashSuggestionList));
getAtMentionItem = (userId) => {
return element(by.id(`${this.testID.atMentionItemPrefix}${userId}`));
}
getChannelMentionItem = (channelId) => {
return element(by.id(`${this.testID.channelMentionItemPrefix}${channelId}`));
}
toBeVisible = async (isVisible = true) => {
if (isVisible) {
await expect(this.autocomplete.atIndex(0)).toBeVisible();
return this.autocomplete;
}
await expect(this.autocomplete).not.toBeVisible();
return null;
}
}
const autocomplete = new Autocomplete();
export default autocomplete;