16
16
17
17
package org.smartregister.fhircore.quest.ui.profile
18
18
19
+ import androidx.appcompat.app.AppCompatActivity
20
+ import androidx.fragment.app.FragmentManager
21
+ import androidx.fragment.app.FragmentTransaction
19
22
import androidx.navigation.NavController
20
23
import androidx.test.core.app.ApplicationProvider
21
24
import androidx.test.platform.app.InstrumentationRegistry
@@ -35,6 +38,8 @@ import javax.inject.Inject
35
38
import kotlin.test.assertEquals
36
39
import kotlin.test.assertNotNull
37
40
import kotlinx.coroutines.runBlocking
41
+ import kotlinx.coroutines.test.runTest
42
+ import org.hl7.fhir.r4.model.Group
38
43
import org.hl7.fhir.r4.model.Patient
39
44
import org.hl7.fhir.r4.model.ResourceType
40
45
import org.junit.Before
@@ -52,9 +57,11 @@ import org.smartregister.fhircore.engine.rulesengine.ResourceDataRulesExecutor
52
57
import org.smartregister.fhircore.engine.util.DefaultDispatcherProvider
53
58
import org.smartregister.fhircore.engine.util.DispatcherProvider
54
59
import org.smartregister.fhircore.engine.util.extension.BLACK_COLOR_HEX_CODE
60
+ import org.smartregister.fhircore.engine.util.extension.getActivity
55
61
import org.smartregister.fhircore.engine.util.fhirpath.FhirPathDataExtractor
56
62
import org.smartregister.fhircore.quest.app.fakes.Faker
57
63
import org.smartregister.fhircore.quest.robolectric.RobolectricTest
64
+ import org.smartregister.fhircore.quest.ui.profile.bottomSheet.ProfileBottomSheetFragment
58
65
import org.smartregister.fhircore.quest.ui.profile.model.EligibleManagingEntity
59
66
import org.smartregister.fhircore.quest.util.extensions.handleClickEvent
60
67
@@ -101,8 +108,13 @@ class ProfileViewModelTest : RobolectricTest() {
101
108
parser = parser,
102
109
),
103
110
)
104
- coEvery { registerRepository.loadProfileData(any(), any(), paramsList = emptyArray()) } returns
105
- RepositoryResourceData (resource = Faker .buildPatient())
111
+ coEvery {
112
+ registerRepository.loadProfileData(
113
+ any(),
114
+ any(),
115
+ paramsList = emptyArray(),
116
+ )
117
+ } returns RepositoryResourceData (resource = Faker .buildPatient())
106
118
107
119
runBlocking {
108
120
configurationRegistry.loadConfigurations(
@@ -210,4 +222,76 @@ class ProfileViewModelTest : RobolectricTest() {
210
222
profileViewModel.onEvent(event)
211
223
}
212
224
}
225
+
226
+ @Test
227
+ fun testThatManagingEntityProfileBottomSheetIsShownOnActionTriggered () = runTest {
228
+ val navController = mockk<NavController >()
229
+ val event = mockk<ProfileEvent .OverflowMenuClick >()
230
+ val fragmentManager = mockk<FragmentManager >()
231
+ val fragmentManagerTransaction = mockk<FragmentTransaction >()
232
+ val overflowMenuItemConfig =
233
+ OverflowMenuItemConfig (
234
+ id = 1 ,
235
+ title = " open profile bottom sheet" ,
236
+ confirmAction = false ,
237
+ icon = null ,
238
+ titleColor = BLACK_COLOR_HEX_CODE ,
239
+ backgroundColor = null ,
240
+ visible = " true" ,
241
+ showSeparator = false ,
242
+ enabled = " true" ,
243
+ actions = emptyList(),
244
+ )
245
+ val group =
246
+ Group ().apply { managingEntity = managingEntity.apply { reference = " patient/1424251" } }
247
+ val managingEntityResource = mockk<Group .GroupMemberComponent >()
248
+ val profileBottomSheetFragment = mockk<ProfileBottomSheetFragment >()
249
+ val activity = mockk<AppCompatActivity >()
250
+
251
+ val viewModel =
252
+ ProfileViewModel (
253
+ registerRepository,
254
+ configurationRegistry,
255
+ dispatcherProvider,
256
+ fhirPathDataExtractor,
257
+ resourceDataRulesExecutor,
258
+ )
259
+
260
+ val managingEntityConfig =
261
+ ManagingEntityConfig (
262
+ nameFhirPathExpression = " name" ,
263
+ eligibilityCriteriaFhirPathExpression = " criteria" ,
264
+ resourceType = ResourceType .Patient ,
265
+ dialogTitle = " Change Managing Entity" ,
266
+ dialogWarningMessage = " Warning" ,
267
+ dialogContentMessage = " Select a new managing entity" ,
268
+ noMembersErrorMessage = " No members found" ,
269
+ managingEntityReassignedMessage = " Managing entity reassigned" ,
270
+ )
271
+
272
+ coEvery { registerRepository.loadResource<Group >(" group1" ) } returns group
273
+ coEvery { group.member } returns listOf (managingEntityResource)
274
+ every { managingEntityResource.id } returns " entity1"
275
+ every {
276
+ fhirPathDataExtractor.extractValue(
277
+ managingEntityResource,
278
+ " name" ,
279
+ )
280
+ } returns " memebr 1"
281
+ every { activity.supportFragmentManager } returns fragmentManager
282
+ every { activity.supportFragmentManager.beginTransaction() } returns fragmentManagerTransaction
283
+ viewModel.onEvent(
284
+ ProfileEvent .OverflowMenuClick (
285
+ navController,
286
+ resourceData,
287
+ overflowMenuItemConfig,
288
+ ),
289
+ )
290
+ profileViewModel.changeManagingEntity(event, managingEntityConfig)
291
+ verifyAll {
292
+ navController.context
293
+ activity.getActivity()
294
+ profileBottomSheetFragment.show(fragmentManager, ProfileBottomSheetFragment .TAG )
295
+ }
296
+ }
213
297
}
0 commit comments