Skip to content

Commit

Permalink
Exclude some compose lambda functions from jacoco
Browse files Browse the repository at this point in the history
  • Loading branch information
LZRS committed Sep 26, 2023
1 parent 73a0a2a commit c1582e6
Show file tree
Hide file tree
Showing 6 changed files with 74 additions and 35 deletions.
Expand Up @@ -88,7 +88,10 @@ constructor(
log =
"${log}Id,${group.key},Date" +
"\n" +
group.value.joinToString(separator = "\n") { "${it.id},${it.version},${it.date}" } +
group.value.joinToString(separator = "\n") @ExcludeFromJacocoGeneratedReport
{
"${it.id},${it.version},${it.date}"
} +
"" +
"\n-----------------------------------------------------\n"
}
Expand All @@ -115,7 +118,8 @@ constructor(

fun fetchDetails() {
try {
viewModelScope.launch {
viewModelScope.launch @ExcludeFromJacocoGeneratedReport
{
val userInfo = keycloakService.fetchUserInfo().body()
if (userInfo != null && !userInfo.keycloakUuid.isNullOrEmpty()) {
val bundle =
Expand Down
Expand Up @@ -84,24 +84,29 @@ fun SettingsScreen(
) {
ModalBottomSheetLayout(
sheetState = devMenuSheetState,

Check warning on line 86 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt#L86

Added line #L86 was not covered by tests
sheetContent = {
DevMenu(viewModel = devViewModel) {
scope.launch {
devMenuSheetState.hide()
viewResSheetState.show()
sheetContent =
@ExcludeFromJacocoGeneratedReport
{

Check warning on line 89 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt#L89

Added line #L89 was not covered by tests
DevMenu(viewModel = devViewModel) {
scope.launch @ExcludeFromJacocoGeneratedReport

Check warning on line 91 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt#L91

Added line #L91 was not covered by tests
{
devMenuSheetState.hide()
viewResSheetState.show()
}
}

Check warning on line 96 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt#L96

Added line #L96 was not covered by tests
}
}
) {

Check warning on line 98 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt#L98

Added line #L98 was not covered by tests
Scaffold(
topBar = {

Check warning on line 100 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt#L100

Added line #L100 was not covered by tests
TopAppBar(
title = {},
navigationIcon = {
IconButton(onClick = { navController?.popBackStack() }) {
Icon(Icons.Default.ArrowBack, "")
navigationIcon =
@ExcludeFromJacocoGeneratedReport
{

Check warning on line 105 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt#L105

Added line #L105 was not covered by tests
IconButton(onClick = { navController?.popBackStack() }) {
Icon(Icons.Default.ArrowBack, "")
}

Check warning on line 108 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt#L108

Added line #L108 was not covered by tests
}
}
)
}
) { paddingValues ->

Check warning on line 112 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt#L110-L112

Added lines #L110 - L112 were not covered by tests
Expand Down Expand Up @@ -129,14 +134,19 @@ fun SettingsScreen(
UserProfileRow(
icon = Icons.Rounded.BugReport,
text = "Dev Menu",

Check warning on line 136 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt#L134-L136

Added lines #L134 - L136 were not covered by tests
clickListener = { scope.launch { devMenuSheetState.show() } },
clickListener =
@ExcludeFromJacocoGeneratedReport
{
scope.launch @ExcludeFromJacocoGeneratedReport { devMenuSheetState.show() }
},
modifier = modifier

Check warning on line 142 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt#L142

Added line #L142 was not covered by tests
)

UserProfileRow(
icon = Icons.Rounded.Logout,
text = stringResource(id = R.string.logout),

Check warning on line 147 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt#L145-L147

Added lines #L145 - L147 were not covered by tests
clickListener = { settingsViewModel.logoutUser(context) },
clickListener =
@ExcludeFromJacocoGeneratedReport { settingsViewModel.logoutUser(context) },
modifier = modifier

Check warning on line 150 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/SettingsScreen.kt#L150

Added line #L150 was not covered by tests
)
}
Expand All @@ -157,7 +167,7 @@ fun UserProfileRow(
modifier =
modifier
.fillMaxWidth()
.clickable { clickListener() }
.clickable @ExcludeFromJacocoGeneratedReport { clickListener() }
.padding(vertical = 16.dp, horizontal = 20.dp),
horizontalArrangement = Arrangement.SpaceBetween
) {
Expand Down
Expand Up @@ -69,7 +69,7 @@ constructor(
val data = MutableLiveData<ProfileData>()

init {
viewModelScope.launch { fetchData() }
viewModelScope.launch @ExcludeFromJacocoGeneratedReport { fetchData() }
}

private suspend fun fetchData() {
Expand Down Expand Up @@ -123,7 +123,8 @@ constructor(

fun logoutUser(context: Context) {
onLogout.postValue(true)
accountAuthenticator.logout {
accountAuthenticator.logout @ExcludeFromJacocoGeneratedReport
{
context.getActivity()?.launchActivityWithNoBackStackHistory<LoginActivity>()
}
}
Expand Down
Expand Up @@ -42,13 +42,18 @@ fun DevMenu(viewModel: DevViewModel, viewRes: () -> Unit) {
) {
Button(
modifier = Modifier.fillMaxWidth(),
onClick = { scope.launch { viewModel.createResourceReport(context) } }
onClick =
@ExcludeFromJacocoGeneratedReport
{
scope.launch @ExcludeFromJacocoGeneratedReport { viewModel.createResourceReport(context) }
}
) { Text(text = "Export Report Resources") }
Button(modifier = Modifier.fillMaxWidth(), onClick = viewRes) {

Check warning on line 51 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/views/DevMenu.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/views/DevMenu.kt#L51

Added line #L51 was not covered by tests
Text(text = "View Report Resources")
}

Check warning on line 53 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/views/DevMenu.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/views/DevMenu.kt#L53

Added line #L53 was not covered by tests
Button(modifier = Modifier.fillMaxWidth(), onClick = { viewModel.fetchDetails() }) {
Text(text = "Test Fetch")
}
Button(
modifier = Modifier.fillMaxWidth(),
onClick = @ExcludeFromJacocoGeneratedReport { viewModel.fetchDetails() }
) { Text(text = "Test Fetch") }
}
}
Expand Up @@ -47,16 +47,23 @@ import org.smartregister.fhircore.engine.util.annotation.ExcludeFromJacocoGenera
fun ViewResourceReport(viewModel: DevViewModel) {
var data by remember { mutableStateOf(mapOf<String, List<ResourceField>>()) }

Check warning on line 48 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/views/ViewResources.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/views/ViewResources.kt#L48

Added line #L48 was not covered by tests

LaunchedEffect(viewModel) { data = viewModel.getResourcesToReport() }
LaunchedEffect(viewModel) @ExcludeFromJacocoGeneratedReport
{
data = viewModel.getResourcesToReport()
}

Scaffold { paddingValues ->
LazyColumn(
verticalArrangement = Arrangement.spacedBy(8.dp),
modifier = Modifier.padding(paddingValues).padding(horizontal = 12.dp)

Check warning on line 58 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/views/ViewResources.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/views/ViewResources.kt#L57-L58

Added lines #L57 - L58 were not covered by tests
) {
) @ExcludeFromJacocoGeneratedReport
{

Check warning on line 60 in android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/views/ViewResources.kt

View check run for this annotation

Codecov / codecov/patch

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/settings/views/ViewResources.kt#L60

Added line #L60 was not covered by tests
data.entries.forEach { group ->
run {
stickyHeader { Text(text = group.key, style = MaterialTheme.typography.h5) }
stickyHeader @ExcludeFromJacocoGeneratedReport
{
Text(text = group.key, style = MaterialTheme.typography.h5)
}
items(group.value) { item ->
Card(Modifier.fillMaxWidth()) {
Column(
Expand Down
Expand Up @@ -114,7 +114,7 @@ internal class LoginViewModelTest : RobolectricTest() {
}

@Test
fun testSuccessfulOfflineLogin() {
fun testSuccessfulOfflineLogin() = runTest {
val activity = mockedActivity()

updateCredentials()
Expand All @@ -134,7 +134,7 @@ internal class LoginViewModelTest : RobolectricTest() {
Assert.assertTrue(loginViewModel.navigateToHome.value!!)
}
@Test
fun testUnSuccessfulOfflineLogin() {
fun testUnSuccessfulOfflineLogin() = runTest {
val activity = mockedActivity()

updateCredentials()
Expand All @@ -155,7 +155,7 @@ internal class LoginViewModelTest : RobolectricTest() {
}

@Test
fun testSuccessfulOnlineLoginWithActiveSessionWithSavedPractitionerDetails() {
fun testSuccessfulOnlineLoginWithActiveSessionWithSavedPractitionerDetails() = runTest {
updateCredentials()
sharedPreferencesHelper.write(
SharedPreferenceKey.PRACTITIONER_DETAILS.name,
Expand Down Expand Up @@ -187,16 +187,28 @@ internal class LoginViewModelTest : RobolectricTest() {
}

@Test
fun testSuccessfulOnlineLoginWithActiveSessionWithNoPractitionerDetailsSaved() {
fun testSuccessfulOnlineLoginWithActiveSessionWithNoPractitionerDetailsSaved() = runTest {
updateCredentials()
every { tokenAuthenticator.sessionActive() } returns true
coEvery {
tokenAuthenticator.fetchAccessToken(thisUsername, thisPassword.toCharArray())
} returns
Result.success(
OAuthResponse(
accessToken = "very_new_top_of_the_class_access_token",
tokenType = "you_guess_it",
refreshToken = "another_very_refreshing_token",
refreshExpiresIn = 540000,
scope = "open_my_guy"
)
)
loginViewModel.login(mockedActivity(isDeviceOnline = true))
val toHome = loginViewModel.navigateToHome.value!!
Assert.assertFalse(toHome)
}

@Test
fun testUnSuccessfulOnlineLoginUsingDifferentUsername() {
fun testUnSuccessfulOnlineLoginUsingDifferentUsername() = runTest {
updateCredentials()
secureSharedPreference.saveCredentials("nativeUser", "n4t1veP5wd".toCharArray())
every { tokenAuthenticator.sessionActive() } returns false
Expand All @@ -209,7 +221,7 @@ internal class LoginViewModelTest : RobolectricTest() {
}

@Test
fun testSuccessfulNewOnlineLoginShouldFetchUserInfoAndPractitioner() {
fun testSuccessfulNewOnlineLoginShouldFetchUserInfoAndPractitioner() = runTest {
updateCredentials()
secureSharedPreference.saveCredentials(thisUsername, thisPassword.toCharArray())
every { tokenAuthenticator.sessionActive() } returns false
Expand Down Expand Up @@ -250,7 +262,7 @@ internal class LoginViewModelTest : RobolectricTest() {
}

@Test
fun testUnSuccessfulOnlineLoginUserInfoNotFetched() {
fun testUnSuccessfulOnlineLoginUserInfoNotFetched() = runTest {
updateCredentials()
secureSharedPreference.saveCredentials(thisUsername, thisPassword.toCharArray())
every { tokenAuthenticator.sessionActive() } returns false
Expand Down Expand Up @@ -281,7 +293,7 @@ internal class LoginViewModelTest : RobolectricTest() {
}

@Test
fun testUnSuccessfulOnlineLoginPractitionerDetailsNotFetchedException() {
fun testUnSuccessfulOnlineLoginPractitionerDetailsNotFetchedException() = runTest {
updateCredentials()
secureSharedPreference.saveCredentials(thisUsername, thisPassword.toCharArray())
every { tokenAuthenticator.sessionActive() } returns false
Expand Down Expand Up @@ -312,7 +324,7 @@ internal class LoginViewModelTest : RobolectricTest() {
}

@Test
fun testUnSuccessfulOnlineLoginWhenAccessTokenNotReceived() {
fun testUnSuccessfulOnlineLoginWhenAccessTokenNotReceived() = runTest {
updateCredentials()
secureSharedPreference.saveCredentials(thisUsername, thisPassword.toCharArray())
every { tokenAuthenticator.sessionActive() } returns false
Expand Down Expand Up @@ -360,14 +372,14 @@ internal class LoginViewModelTest : RobolectricTest() {
}

@Test
fun testUpdateNavigateShouldUpdateLiveData() {
fun testUpdateNavigateShouldUpdateLiveData() = runTest {
loginViewModel.updateNavigateHome(true)
Assert.assertNotNull(loginViewModel.navigateToHome.value)
Assert.assertTrue(loginViewModel.navigateToHome.value!!)
}

@Test
fun testForgotPasswordLoadsContact() {
fun testForgotPasswordLoadsContact() = runTest {
loginViewModel.forgotPassword()
Assert.assertEquals("tel:0123456789", loginViewModel.launchDialPad.value)
}
Expand Down

0 comments on commit c1582e6

Please sign in to comment.