Skip to content

Commit

Permalink
test: setup tests tags and tests for FullScreenImagePopup
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex720p committed Dec 16, 2024
1 parent 34ecd7e commit 9cb20a4
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@ package com.android.streetworkapp.ui.image
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithTag
import com.android.streetworkapp.model.image.ImageRating
import com.android.streetworkapp.model.image.ImageRepository
import com.android.streetworkapp.model.image.ImageViewModel
import com.android.streetworkapp.model.image.ParkImage
import com.android.streetworkapp.model.park.Park
import com.android.streetworkapp.model.user.User
import com.android.streetworkapp.model.user.UserRepository
import com.android.streetworkapp.model.user.UserViewModel
import com.google.firebase.Timestamp
import org.junit.Before
import org.junit.Rule
import org.junit.Test
Expand All @@ -24,7 +27,7 @@ class FullScreenImagePopupTest {
@InjectMocks private lateinit var userViewModel: UserViewModel
@InjectMocks private lateinit var imageViewModel: ImageViewModel

private var currentUser =
private var baseUser =
User(
uid = "12345",
username = "john_doe",
Expand All @@ -34,6 +37,19 @@ class FullScreenImagePopupTest {
picture = "https://example.com/profile_pic.jpg",
parks = listOf("park1", "park2", "park3"))

private var baseImage =
ParkImage(
imageUrl = "https://dummyimageulr.com",
userId = "ownerUsedId",
username = "ownerUsername",
rating =
ImageRating(
positiveVotes = 1,
positiveVotesUids = listOf("positiveVoterUid"),
negativeVotes = 0,
negativeVotesUids = emptyList()),
uploadDate = Timestamp.now())

private var park = Park(pid = "parkId123")

@get:Rule val composeTestRule = createComposeRule()
Expand All @@ -52,4 +68,43 @@ class FullScreenImagePopupTest {
composeTestRule.waitForIdle()
composeTestRule.onNodeWithTag("noImagesDisplay").assertIsDisplayed()
}

@Test
fun `retractVote button is shown if user is in image voting list`() {
val userInVotingList = baseUser.copy(uid = baseImage.rating.positiveVotesUids[0])
userViewModel.setCurrentUser(userInVotingList)

composeTestRule.setContent {
FullScreenImagePopup(listOf(baseImage), park, userViewModel, imageViewModel) {}
}

composeTestRule.waitForIdle()
composeTestRule.onNodeWithTag("retractVoteButton").assertIsDisplayed()
}

@Test
fun `deleteImage button is shown if user is owner of image`() {
val userOwnerOfImage = baseUser.copy(uid = baseImage.userId)
userViewModel.setCurrentUser(userOwnerOfImage)

composeTestRule.setContent {
FullScreenImagePopup(listOf(baseImage), park, userViewModel, imageViewModel) {}
}

composeTestRule.waitForIdle()
composeTestRule.onNodeWithTag("deleteImageButton").assertIsDisplayed()
}

@Test
fun `voteImage buttons are shown if user is neither owner of image nor in image voting list`() {
userViewModel.setCurrentUser(baseUser)

composeTestRule.setContent {
FullScreenImagePopup(listOf(baseImage), park, userViewModel, imageViewModel) {}
}

composeTestRule.waitForIdle()
composeTestRule.onNodeWithTag("likeImageButton").assertIsDisplayed()
composeTestRule.onNodeWithTag("dislikeImageButton").assertIsDisplayed()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ fun UserImageActions(
if (currentUser != null && currentUser.uid != currentImage.userId) {
if (currentImage.rating.positiveVotesUids.contains(currentUser.uid) ||
currentImage.rating.negativeVotesUids.contains(currentUser.uid)) {
Box(modifier = Modifier.padding(horizontal = 15.dp)) {
Box(modifier = Modifier.padding(horizontal = 15.dp).testTag("retractVoteButton")) {
// Retract Vote Button
IconButton(
onClick = {
Expand All @@ -207,7 +207,7 @@ fun UserImageActions(
}
}
} else {
Box(modifier = Modifier.padding(horizontal = 15.dp)) {
Box(modifier = Modifier.padding(horizontal = 15.dp).testTag("likeImageButton")) {
// Like Button
IconButton(
onClick = {
Expand All @@ -228,7 +228,7 @@ fun UserImageActions(
}
}

Box(modifier = Modifier.padding(horizontal = 15.dp)) {
Box(modifier = Modifier.padding(horizontal = 15.dp).testTag("dislikeImageButton")) {
// Dislike Button
IconButton(
onClick = {
Expand All @@ -251,7 +251,7 @@ fun UserImageActions(
}
} else { // The user who uploaded the picture should only be able to delete
// it, not vote on it
Box(modifier = Modifier.padding(horizontal = 15.dp)) {
Box(modifier = Modifier.padding(horizontal = 15.dp).testTag("deleteImageButton")) {
// Delete Button
IconButton(
onClick = {
Expand All @@ -272,7 +272,7 @@ fun UserImageActions(
.background(FullScreenImagePopUpSetting.dislikeButtonColor)) {
Icon(
imageVector = Icons.Filled.Delete,
contentDescription = "Dislike",
contentDescription = "Delete button",
tint = Color.White)
}
}
Expand Down

0 comments on commit 9cb20a4

Please sign in to comment.