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
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import androidx.test.uiautomator.StaleObjectException
import androidx.test.uiautomator.UiDevice
import androidx.test.uiautomator.UiSelector
import org.junit.Assert
import java.util.regex.Pattern
import uiautomatorutils.UiSelectorParams
import uiautomatorutils.UiWaitUtils
import uiautomatorutils.UiWaitUtils.findElementOrNull
Expand All @@ -49,6 +50,10 @@ data class ConversationListPage(private val device: UiDevice) {
private val conversationNameSelector: (String) -> UiSelectorParams = { conversationName ->
UiSelectorParams(text = conversationName)
}
private val deleteConversationButton = UiSelectorParams(text = "Delete Conversation")
private val removeConversationButton = UiSelectorParams(text = "Remove")
private val removeConversationDescription =
UiSelectorParams(textContains = "The conversation will be removed from your conversations list")
private val startNewConversation = UiSelectorParams(description = "New. Start a new conversation")

private val userConversationNamePendingLabelSelector =
Expand Down Expand Up @@ -145,6 +150,10 @@ data class ConversationListPage(private val device: UiDevice) {
return assertConversationVisible(conversationName)
}

fun assertChannelConversationVisible(conversationName: String): ConversationListPage {
return assertConversationVisible(conversationName)
}

fun clickConnectionRequestOfUser(userName: String): ConversationListPage {
val teamMemberName = UiWaitUtils.waitElement(displayedUserName(userName))
teamMemberName.click()
Expand Down Expand Up @@ -187,6 +196,54 @@ data class ConversationListPage(private val device: UiDevice) {
return this
}

fun clickChannelConversation(conversationName: String, timeout: Duration = 10.seconds): ConversationListPage {
return clickGroupConversation(conversationName, timeout)
}

fun longPressConversation(conversationName: String): ConversationListPage {
val conversation = UiWaitUtils.waitElement(conversationNameSelector(conversationName))
val center = conversation.visibleCenter
UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
.swipe(center.x, center.y, center.x, center.y, 120)
return this
}

fun assertDeleteConversationButtonVisibleInConversationActions(): ConversationListPage {
try {
UiWaitUtils.waitElement(deleteConversationButton)
} catch (e: AssertionError) {
throw AssertionError("Delete Conversation button is not visible in conversation actions.", e)
}
return this
}

fun tapDeleteConversationButtonInConversationActions(): ConversationListPage {
UiWaitUtils.waitElement(deleteConversationButton).click()
return this
}

fun assertRemoveConversationConfirmationModalVisible(conversationName: String): ConversationListPage {
val modalTitle = UiSelectorParams(
textMatches = ".*Remove.*${Pattern.quote(conversationName)}.*"
)
try {
UiWaitUtils.waitElement(modalTitle)
UiWaitUtils.waitElement(removeConversationDescription)
UiWaitUtils.waitElement(removeConversationButton)
} catch (e: AssertionError) {
throw AssertionError(
"Remove conversation confirmation modal for '$conversationName' is not visible.",
e
)
}
return this
}

fun tapRemoveConversationButton(): ConversationListPage {
UiWaitUtils.waitElement(removeConversationButton).click()
return this
}

private fun unreadCountSelector(count: String): UiSelectorParams {
return UiSelectorParams(text = count)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ data class ConversationViewPage(private val device: UiDevice) {
private val pingButton = UiSelectorParams(description = "Ping")
private val pingButtonOnModal = UiSelectorParams(text = "Ping")
private val guestsAndAppsBanner = UiSelectorParams(textContains = "Guests and apps are present")
private val topOfConversationViewPageMessage = UiSelectorParams(textContains = "You made it to the top")

private val mlsUpgradeMessageSelectors = listOf(
UiSelectorParams(textContains = "This conversation now uses the new Messaging"),
Expand Down Expand Up @@ -511,6 +512,15 @@ data class ConversationViewPage(private val device: UiDevice) {
return this
}

fun assertChannelConversationInForeground(conversationName: String): ConversationViewPage {
try {
UiWaitUtils.waitElement(conversationDetailsGroup(conversationName))
} catch (e: AssertionError) {
throw AssertionError("Channel conversation '$conversationName' is not in foreground.", e)
}
return this
}

fun assertGuestsAndAppsBannerVisible(): ConversationViewPage {
try {
UiWaitUtils.waitElement(guestsAndAppsBanner)
Expand All @@ -521,6 +531,19 @@ data class ConversationViewPage(private val device: UiDevice) {
return this
}

fun assertTopOfConversationViewPageVisible(): ConversationViewPage {
try {
UiWaitUtils.waitElement(topOfConversationViewPageMessage)
} catch (e: AssertionError) {
throw AssertionError(
"Top-of-conversation message is not visible in conversation view.",
e
)
}

return this
}

fun click1On1ConversationDetails(userName: String): ConversationViewPage {
val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
val userName = device.findObject(conversationDetails1On1(userName))
Expand All @@ -543,6 +566,10 @@ data class ConversationViewPage(private val device: UiDevice) {
return this
}

fun clickOnChannelConversationDetails(conversationName: String): ConversationViewPage {
return clickOnGroupConversationDetails(conversationName)
}

fun iTapStartCallButton(): ConversationViewPage {
UiWaitUtils.waitElement(startCallButton).click()
return this
Expand Down
Loading
Loading