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 56b293f
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 47 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 @@ -78,7 +78,8 @@ fun InfoCard(viewModel: SettingsViewModel) {
)
}
}
Card(Modifier.padding(6.dp)) {
Card(Modifier.padding(6.dp)) @ExcludeFromJacocoGeneratedReport
{
Column(Modifier.padding(10.dp)) {
generateData(data!!).forEach {
Column(modifier = Modifier.fillMaxWidth().padding(8.dp)) {
Expand All @@ -98,7 +99,11 @@ fun InfoCard(viewModel: SettingsViewModel) {
fun FieldCard(fieldData: FieldData) {
var show by remember { mutableStateOf(false) }

Card(onClick = { show = !show }, modifier = Modifier.fillMaxWidth()) {
Card(
onClick = { show = !show },
modifier = Modifier.fillMaxWidth()
) @ExcludeFromJacocoGeneratedReport
{
Column(verticalArrangement = Arrangement.spacedBy(6.dp), modifier = Modifier.padding(8.dp)) {
Text(text = fieldData.value)

Expand Down
Expand Up @@ -81,30 +81,40 @@ fun SettingsScreen(
ModalBottomSheetLayout(
sheetState = viewResSheetState,
sheetContent = { ViewResourceReport(devViewModel) }
) {
) @ExcludeFromJacocoGeneratedReport
{
ModalBottomSheetLayout(
sheetState = devMenuSheetState,
sheetContent = {
DevMenu(viewModel = devViewModel) {
scope.launch {
devMenuSheetState.hide()
viewResSheetState.show()
sheetContent =
@ExcludeFromJacocoGeneratedReport
{
DevMenu(viewModel = devViewModel) @ExcludeFromJacocoGeneratedReport
{
scope.launch @ExcludeFromJacocoGeneratedReport
{
devMenuSheetState.hide()
viewResSheetState.show()
}
}
}
}
) {
Scaffold(
topBar = {
TopAppBar(
title = {},
navigationIcon = {
IconButton(onClick = { navController?.popBackStack() }) {
Icon(Icons.Default.ArrowBack, "")
}
}
)
}
) { paddingValues ->
topBar =
@ExcludeFromJacocoGeneratedReport
{
TopAppBar(
title = {},
navigationIcon =
@ExcludeFromJacocoGeneratedReport
{
IconButton(
onClick = { navController?.popBackStack() }
) @ExcludeFromJacocoGeneratedReport { Icon(Icons.Default.ArrowBack, "") }
}
)
}
) @ExcludeFromJacocoGeneratedReport
{ paddingValues ->
Column(
modifier =
modifier
Expand All @@ -129,14 +139,19 @@ fun SettingsScreen(
UserProfileRow(
icon = Icons.Rounded.BugReport,
text = "Dev Menu",
clickListener = { scope.launch { devMenuSheetState.show() } },
clickListener =
@ExcludeFromJacocoGeneratedReport
{
scope.launch @ExcludeFromJacocoGeneratedReport { devMenuSheetState.show() }
},
modifier = modifier
)

UserProfileRow(
icon = Icons.Rounded.Logout,
text = stringResource(id = R.string.logout),
clickListener = { settingsViewModel.logoutUser(context) },
clickListener =
@ExcludeFromJacocoGeneratedReport { settingsViewModel.logoutUser(context) },
modifier = modifier
)
}
Expand All @@ -157,7 +172,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) {
Text(text = "View Report Resources")
}
Button(modifier = Modifier.fillMaxWidth(), onClick = { viewModel.fetchDetails() }) {
Text(text = "Test Fetch")
}
Button(
modifier = Modifier.fillMaxWidth(),
onClick = @ExcludeFromJacocoGeneratedReport { viewModel.fetchDetails() }
) @ExcludeFromJacocoGeneratedReport { Text(text = "Test Fetch") }
}
}
Expand Up @@ -47,23 +47,34 @@ import org.smartregister.fhircore.engine.util.annotation.ExcludeFromJacocoGenera
fun ViewResourceReport(viewModel: DevViewModel) {
var data by remember { mutableStateOf(mapOf<String, List<ResourceField>>()) }

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

Scaffold { paddingValues ->
Scaffold @ExcludeFromJacocoGeneratedReport
{ paddingValues ->
LazyColumn(
verticalArrangement = Arrangement.spacedBy(8.dp),
modifier = Modifier.padding(paddingValues).padding(horizontal = 12.dp)
) {
) @ExcludeFromJacocoGeneratedReport
{
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(
verticalArrangement = Arrangement.spacedBy(4.dp),
modifier = Modifier.padding(6.dp).fillMaxWidth()
) {
Chip(onClick = {}, enabled = false) { Text(text = item.version) }
Chip(onClick = {}, enabled = false) @ExcludeFromJacocoGeneratedReport
{
Text(text = item.version)
}

Text(text = item.id)
Text(text = item.date)
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,7 +187,7 @@ internal class LoginViewModelTest : RobolectricTest() {
}

@Test
fun testSuccessfulOnlineLoginWithActiveSessionWithNoPractitionerDetailsSaved() {
fun testSuccessfulOnlineLoginWithActiveSessionWithNoPractitionerDetailsSaved() = runTest {
updateCredentials()
every { tokenAuthenticator.sessionActive() } returns true
loginViewModel.login(mockedActivity(isDeviceOnline = true))
Expand All @@ -196,7 +196,7 @@ internal class LoginViewModelTest : RobolectricTest() {
}

@Test
fun testUnSuccessfulOnlineLoginUsingDifferentUsername() {
fun testUnSuccessfulOnlineLoginUsingDifferentUsername() = runTest {
updateCredentials()
secureSharedPreference.saveCredentials("nativeUser", "n4t1veP5wd".toCharArray())
every { tokenAuthenticator.sessionActive() } returns false
Expand All @@ -209,7 +209,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 +250,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 +281,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 +312,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 +360,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 56b293f

Please sign in to comment.