11package com.android.unio.components.event
22
33import android.content.ContentResolver
4+ import android.content.Context
45import android.content.res.Resources
56import android.net.Uri
67import androidx.annotation.AnyRes
@@ -23,6 +24,7 @@ import com.android.unio.TearDown
2324import com.android.unio.assertDisplayComponentInScroll
2425import com.android.unio.mocks.association.MockAssociation
2526import com.android.unio.mocks.event.MockEvent
27+ import com.android.unio.mocks.firestore.MockReferenceElement
2628import com.android.unio.mocks.firestore.MockReferenceList
2729import com.android.unio.mocks.user.MockUser
2830import com.android.unio.model.association.Association
@@ -33,6 +35,7 @@ import com.android.unio.model.event.EventUserPicture
3335import com.android.unio.model.event.EventUserPictureRepositoryFirestore
3436import com.android.unio.model.event.EventUtils.formatTimestamp
3537import com.android.unio.model.event.EventViewModel
38+ import com.android.unio.model.firestore.emptyFirestoreReferenceList
3639import com.android.unio.model.image.ImageRepositoryFirebaseStorage
3740import com.android.unio.model.map.MapViewModel
3841import com.android.unio.model.strings.FormatStrings.DAY_MONTH_FORMAT
@@ -42,6 +45,7 @@ import com.android.unio.model.usecase.UserDeletionUseCaseFirestore
4245import com.android.unio.model.user.User
4346import com.android.unio.model.user.UserRepositoryFirestore
4447import com.android.unio.model.user.UserViewModel
48+ import com.android.unio.ui.event.EventDetailsPicturesTab
4549import com.android.unio.ui.event.EventScreenScaffold
4650import com.android.unio.ui.navigation.NavigationAction
4751import com.android.unio.ui.navigation.Screen
@@ -66,8 +70,10 @@ class EventDetailsTest : TearDown() {
6670 private lateinit var navigationAction: NavigationAction
6771
6872 private lateinit var events: List <Event >
73+ private lateinit var user: User
6974 private lateinit var eventPictures: List <EventUserPicture >
7075 private lateinit var associations: List <Association >
76+ private lateinit var context: Context
7177
7278 private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
7379 private lateinit var mapViewModel: MapViewModel
@@ -98,20 +104,28 @@ class EventDetailsTest : TearDown() {
98104 @Before
99105 fun setUp () {
100106 MockKAnnotations .init (this , relaxed = true )
101- val context = InstrumentationRegistry .getInstrumentation().targetContext
107+ context = InstrumentationRegistry .getInstrumentation().targetContext
102108 val resources = context.applicationContext.resources
109+ user = MockUser .createMockUser(uid = " moi" )
110+
103111 eventPictures =
104112 listOf (
105113 EventUserPicture (
106114 " 12" ,
107115 resources.getUri(R .drawable.placeholder_pictures).toString(),
108116 User .emptyFirestoreReferenceElement(),
109- 0 ),
117+ User .emptyFirestoreReferenceList() ),
110118 EventUserPicture (
111119 " 34" ,
112120 resources.getUri(R .drawable.placeholder_pictures).toString(),
113121 User .emptyFirestoreReferenceElement(),
114- 3 ))
122+ User .emptyFirestoreReferenceList()),
123+ EventUserPicture (
124+ " 56" ,
125+ resources.getUri(R .drawable.placeholder_pictures).toString(),
126+ MockReferenceElement (user),
127+ User .emptyFirestoreReferenceList()),
128+ )
115129 events =
116130 listOf (
117131 MockEvent .createMockEvent(
@@ -158,11 +172,12 @@ class EventDetailsTest : TearDown() {
158172 }
159173
160174 userViewModel = UserViewModel (userRepository, imageRepository, userDeletionRepository)
161- userViewModel.getUserByUid(" uid" )
175+ userViewModel.addUser(user) { userViewModel.refreshUser() }
176+
177+ // every { userRepository.updateUser(user, any(), any()) } returns Unit
162178 }
163179
164180 private fun setEventScreen (event : Event ) {
165-
166181 composeTestRule.setContent {
167182 ProvidePreferenceLocals {
168183 EventScreenScaffold (
@@ -269,8 +284,6 @@ class EventDetailsTest : TearDown() {
269284 .assertDisplayComponentInScroll()
270285
271286 // Save button
272- println (events[0 ].uid)
273- println (eventViewModel.events.value)
274287 composeTestRule.onNodeWithTag(EventDetailsTestTags .SAVE_BUTTON ).assertDisplayComponentInScroll()
275288 composeTestRule.onNodeWithTag(EventDetailsTestTags .SAVE_BUTTON ).performClick()
276289
@@ -354,7 +367,45 @@ class EventDetailsTest : TearDown() {
354367
355368 @Test
356369 fun testFullSizePictureOnClick () {
370+ eventViewModel.loadEvents()
371+ eventViewModel.selectEvent(events[0 ].uid, true )
372+
357373 setEventScreen(events[0 ])
374+
375+ goToGallery()
376+ composeTestRule.waitUntil(5000 ) {
377+ composeTestRule
378+ .onNodeWithTag(EventDetailsTestTags .USER_EVENT_PICTURE + eventPictures[0 ].uid)
379+ .isDisplayed()
380+ }
381+
382+ composeTestRule
383+ .onNodeWithTag(EventDetailsTestTags .USER_EVENT_PICTURE + eventPictures[0 ].uid)
384+ .performClick()
385+
386+ composeTestRule.onNodeWithTag(EventDetailsTestTags .PICTURE_FULL_SCREEN ).assertIsDisplayed()
387+ composeTestRule
388+ .onNodeWithTag(EventDetailsTestTags .EVENT_PICTURES_ARROW_LEFT )
389+ .assertIsDisplayed()
390+
391+ composeTestRule
392+ .onNodeWithTag(EventDetailsTestTags .EVENT_PICTURES_LIKE_BUTTON )
393+ .assertIsDisplayed()
394+ composeTestRule
395+ .onNodeWithTag(EventDetailsTestTags .EVENT_PICTURES_LIKE_COUNTER )
396+ .assertIsDisplayed()
397+ composeTestRule
398+ .onNodeWithTag(EventDetailsTestTags .EVENT_PICTURES_AUTHOR_INFO )
399+ .assertIsDisplayed()
400+ }
401+
402+ @Test
403+ fun testLikePicture () {
404+ eventViewModel.loadEvents()
405+ eventViewModel.selectEvent(events[0 ].uid, true )
406+
407+ setEventScreen(events[0 ])
408+
358409 goToGallery()
359410 composeTestRule.waitUntil(5000 ) {
360411 composeTestRule
@@ -373,5 +424,40 @@ class EventDetailsTest : TearDown() {
373424 composeTestRule
374425 .onNodeWithTag(EventDetailsTestTags .EVENT_PICTURES_ARROW_RIGHT )
375426 .assertIsDisplayed()
427+ .performClick()
428+
429+ composeTestRule
430+ .onNodeWithTag(EventDetailsTestTags .EVENT_PICTURES_LIKE_BUTTON )
431+ .assertIsDisplayed()
432+ .performClick()
433+ Thread .sleep(500 )
434+ composeTestRule
435+ .onNodeWithTag(EventDetailsTestTags .EVENT_PICTURES_LIKE_COUNTER )
436+ .assertTextEquals(" 1" )
437+ }
438+
439+ @Test
440+ fun testDeletePicture () {
441+ eventViewModel.loadEvents()
442+ eventViewModel.selectEvent(events[0 ].uid, true )
443+ composeTestRule.setContent {
444+ ProvidePreferenceLocals { EventDetailsPicturesTab (events[0 ], user, context, eventViewModel) }
445+ }
446+ composeTestRule.waitUntil(5000 ) {
447+ composeTestRule
448+ .onNodeWithTag(EventDetailsTestTags .USER_EVENT_PICTURE + eventPictures[2 ].uid)
449+ .isDisplayed()
450+ }
451+
452+ composeTestRule
453+ .onNodeWithTag(EventDetailsTestTags .USER_EVENT_PICTURE + eventPictures[2 ].uid)
454+ .performClick()
455+
456+ composeTestRule.onNodeWithTag(EventDetailsTestTags .PICTURE_FULL_SCREEN ).assertIsDisplayed()
457+ Thread .sleep(1000 )
458+ composeTestRule
459+ .onNodeWithTag(EventDetailsTestTags .EVENT_PICTURES_DELETE_BUTTON )
460+ .assertIsDisplayed()
461+ .performClick()
376462 }
377463}
0 commit comments