Skip to content

Commit 16ad335

Browse files
SebaMutukuRkareko
andauthored
Test changemanagingentity opens bottomsheet model (#3031)
* Add test for test to shows ProfileBottomSheetFragment * Optimise imports * Run spotlessApply * Remove unnecessary mock --------- Co-authored-by: Rkareko <[email protected]>
1 parent d472087 commit 16ad335

File tree

1 file changed

+86
-2
lines changed

1 file changed

+86
-2
lines changed

android/quest/src/test/java/org/smartregister/fhircore/quest/ui/profile/ProfileViewModelTest.kt

Lines changed: 86 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package org.smartregister.fhircore.quest.ui.profile
1818

19+
import androidx.appcompat.app.AppCompatActivity
20+
import androidx.fragment.app.FragmentManager
21+
import androidx.fragment.app.FragmentTransaction
1922
import androidx.navigation.NavController
2023
import androidx.test.core.app.ApplicationProvider
2124
import androidx.test.platform.app.InstrumentationRegistry
@@ -35,6 +38,8 @@ import javax.inject.Inject
3538
import kotlin.test.assertEquals
3639
import kotlin.test.assertNotNull
3740
import kotlinx.coroutines.runBlocking
41+
import kotlinx.coroutines.test.runTest
42+
import org.hl7.fhir.r4.model.Group
3843
import org.hl7.fhir.r4.model.Patient
3944
import org.hl7.fhir.r4.model.ResourceType
4045
import org.junit.Before
@@ -52,9 +57,11 @@ import org.smartregister.fhircore.engine.rulesengine.ResourceDataRulesExecutor
5257
import org.smartregister.fhircore.engine.util.DefaultDispatcherProvider
5358
import org.smartregister.fhircore.engine.util.DispatcherProvider
5459
import org.smartregister.fhircore.engine.util.extension.BLACK_COLOR_HEX_CODE
60+
import org.smartregister.fhircore.engine.util.extension.getActivity
5561
import org.smartregister.fhircore.engine.util.fhirpath.FhirPathDataExtractor
5662
import org.smartregister.fhircore.quest.app.fakes.Faker
5763
import org.smartregister.fhircore.quest.robolectric.RobolectricTest
64+
import org.smartregister.fhircore.quest.ui.profile.bottomSheet.ProfileBottomSheetFragment
5865
import org.smartregister.fhircore.quest.ui.profile.model.EligibleManagingEntity
5966
import org.smartregister.fhircore.quest.util.extensions.handleClickEvent
6067

@@ -101,8 +108,13 @@ class ProfileViewModelTest : RobolectricTest() {
101108
parser = parser,
102109
),
103110
)
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())
106118

107119
runBlocking {
108120
configurationRegistry.loadConfigurations(
@@ -210,4 +222,76 @@ class ProfileViewModelTest : RobolectricTest() {
210222
profileViewModel.onEvent(event)
211223
}
212224
}
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+
}
213297
}

0 commit comments

Comments
 (0)