Skip to content

Commit

Permalink
Adjust tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
nowakweronika committed Nov 28, 2023
1 parent 7698efa commit 5541e40
Show file tree
Hide file tree
Showing 4 changed files with 231 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,15 @@ import android.content.Intent
import android.net.Uri
import androidx.lifecycle.SavedStateHandle
import androidx.navigation.NavController
import com.appunite.loudius.analytics.EventTracker
import com.appunite.loudius.analytics.events.AuthenticationFinishedFailureEvent
import com.appunite.loudius.analytics.events.AuthenticationFinishedSuccessEvent
import com.appunite.loudius.analytics.events.AuthenticationStartedEvent
import com.appunite.loudius.analytics.events.GetAccessTokenFinishedFailureEvent
import com.appunite.loudius.analytics.events.GetAccessTokenFinishedSuccessEvent
import com.appunite.loudius.analytics.events.GetAccessTokenStartedEvent
import com.appunite.loudius.analytics.events.ShowGenericErrorEvent
import com.appunite.loudius.analytics.events.ShowLoginErrorEvent
import com.appunite.loudius.fakes.FakeAuthRepository
import com.appunite.loudius.network.utils.WebException
import com.appunite.loudius.util.MainDispatcherExtension
Expand All @@ -28,6 +37,7 @@ import io.mockk.coEvery
import io.mockk.every
import io.mockk.mockk
import io.mockk.spyk
import io.mockk.verifyOrder
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import strikt.api.expectThat
Expand All @@ -39,8 +49,9 @@ class AuthenticatingViewModelTest {

private val repository: FakeAuthRepository = spyk(FakeAuthRepository())
private val savedStateHandle = SavedStateHandle()
private val eventTracker = mockk<EventTracker>(relaxed = true)

private fun create() = AuthenticatingViewModel(repository, savedStateHandle)
private fun create() = AuthenticatingViewModel(repository, savedStateHandle, eventTracker)

@Test
fun `GIVEN valid code WHEN authenticated THEN navigate to pull requests screen`() {
Expand All @@ -58,6 +69,12 @@ class AuthenticatingViewModelTest {
get(AuthenticatingState::errorScreenType).isNull()
get(AuthenticatingState::navigateTo).isNull()
}

verifyOrder {
eventTracker.trackEvent(AuthenticationStartedEvent)
eventTracker.trackEvent(AuthenticationFinishedSuccessEvent)
eventTracker.trackEvent(GetAccessTokenFinishedSuccessEvent)
}
}

@Test
Expand All @@ -69,6 +86,13 @@ class AuthenticatingViewModelTest {
get(AuthenticatingState::errorScreenType).isEqualTo(LoadingErrorType.LOGIN_ERROR)
get(AuthenticatingState::navigateTo).isNull()
}

verifyOrder {
eventTracker.trackEvent(AuthenticationStartedEvent)
eventTracker.trackEvent(ShowLoginErrorEvent)
eventTracker.trackEvent(AuthenticationFinishedFailureEvent)
eventTracker.trackEvent(GetAccessTokenFinishedSuccessEvent)
}
}

@Test
Expand All @@ -83,6 +107,13 @@ class AuthenticatingViewModelTest {
get(AuthenticatingState::errorScreenType).isEqualTo(LoadingErrorType.GENERIC_ERROR)
get(AuthenticatingState::navigateTo).isNull()
}

verifyOrder {
eventTracker.trackEvent(AuthenticationStartedEvent)
eventTracker.trackEvent(ShowGenericErrorEvent)
eventTracker.trackEvent(AuthenticationFinishedFailureEvent)
eventTracker.trackEvent(GetAccessTokenFinishedSuccessEvent)
}
}

@Test
Expand Down Expand Up @@ -116,6 +147,16 @@ class AuthenticatingViewModelTest {
get(AuthenticatingState::errorScreenType).isNull()
get(AuthenticatingState::navigateTo).isNull()
}

verifyOrder {
eventTracker.trackEvent(AuthenticationStartedEvent)
eventTracker.trackEvent(ShowGenericErrorEvent)
eventTracker.trackEvent(AuthenticationFinishedFailureEvent)
eventTracker.trackEvent(GetAccessTokenFinishedSuccessEvent)
eventTracker.trackEvent(GetAccessTokenStartedEvent)
eventTracker.trackEvent(AuthenticationFinishedSuccessEvent)
eventTracker.trackEvent(GetAccessTokenFinishedSuccessEvent)
}
}

@Test
Expand All @@ -140,6 +181,13 @@ class AuthenticatingViewModelTest {
get(AuthenticatingState::errorScreenType).isEqualTo(LoadingErrorType.LOGIN_ERROR)
get(AuthenticatingState::navigateTo).isNull()
}

verifyOrder {
eventTracker.trackEvent(AuthenticationStartedEvent)
eventTracker.trackEvent(ShowLoginErrorEvent)
eventTracker.trackEvent(AuthenticationFinishedFailureEvent)
eventTracker.trackEvent(GetAccessTokenFinishedSuccessEvent)
}
}

@Test
Expand All @@ -151,6 +199,11 @@ class AuthenticatingViewModelTest {
get(AuthenticatingState::errorScreenType).isEqualTo(LoadingErrorType.LOGIN_ERROR)
get(AuthenticatingState::navigateTo).isNull()
}

verifyOrder {
eventTracker.trackEvent(AuthenticationStartedEvent)
eventTracker.trackEvent(GetAccessTokenFinishedFailureEvent)
}
}

@Test
Expand All @@ -176,6 +229,11 @@ class AuthenticatingViewModelTest {
get(AuthenticatingState::errorScreenType).isEqualTo(LoadingErrorType.LOGIN_ERROR)
get(AuthenticatingState::navigateTo).isNull()
}

verifyOrder {
eventTracker.trackEvent(AuthenticationStartedEvent)
eventTracker.trackEvent(GetAccessTokenFinishedFailureEvent)
}
}

private fun setupIntent(intentCode: String) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,16 @@

package com.appunite.loudius.ui.login

import com.appunite.loudius.analytics.EventTracker
import com.appunite.loudius.analytics.events.ClickLogInEvent
import com.appunite.loudius.analytics.events.OpenGithubAuthEvent
import com.appunite.loudius.analytics.events.ShowXiaomiPermissionDialogEvent
import com.appunite.loudius.analytics.events.XiaomiPermissionDialogDismissedEvent
import com.appunite.loudius.analytics.events.XiaomiPermissionDialogPermissionAlreadyGrantedEvent
import com.appunite.loudius.analytics.events.XiaomiPermissionDialogPermissionGrantedEvent
import io.mockk.every
import io.mockk.mockk
import io.mockk.verifyOrder
import org.junit.jupiter.api.Test
import strikt.api.expectThat
import strikt.assertions.isEqualTo
Expand All @@ -30,7 +38,8 @@ class LoginScreenViewModelTest {
private val githubHelper = mockk<GithubHelper> {
every { shouldAskForXiaomiIntent() } returns false
}
private fun create() = LoginScreenViewModel(githubHelper)
private val eventTracker = mockk<EventTracker>(relaxed = true)
private fun create() = LoginScreenViewModel(githubHelper, eventTracker)

@Test
fun `WHEN log-in click THEN open github authorization`() {
Expand All @@ -42,6 +51,11 @@ class LoginScreenViewModelTest {
get(LoginState::navigateTo).isEqualTo(LoginNavigateTo.OpenGithubAuth)
get(LoginState::showXiaomiPermissionDialog).isFalse()
}

verifyOrder {
eventTracker.trackEvent(ClickLogInEvent)
eventTracker.trackEvent(OpenGithubAuthEvent)
}
}

@Test
Expand All @@ -55,6 +69,11 @@ class LoginScreenViewModelTest {
get(LoginState::navigateTo).isNull()
get(LoginState::showXiaomiPermissionDialog).isTrue()
}

verifyOrder {
eventTracker.trackEvent(ClickLogInEvent)
eventTracker.trackEvent(ShowXiaomiPermissionDialogEvent)
}
}

@Test
Expand All @@ -70,6 +89,12 @@ class LoginScreenViewModelTest {
get(LoginState::navigateTo).isNull()
get(LoginState::showXiaomiPermissionDialog).isFalse()
}

verifyOrder {
eventTracker.trackEvent(ClickLogInEvent)
eventTracker.trackEvent(ShowXiaomiPermissionDialogEvent)
eventTracker.trackEvent(XiaomiPermissionDialogDismissedEvent)
}
}

@Test
Expand All @@ -85,6 +110,12 @@ class LoginScreenViewModelTest {
get(LoginState::navigateTo).isEqualTo(LoginNavigateTo.OpenXiaomiPermissionManager)
get(LoginState::showXiaomiPermissionDialog).isTrue()
}

verifyOrder {
eventTracker.trackEvent(ClickLogInEvent)
eventTracker.trackEvent(ShowXiaomiPermissionDialogEvent)
eventTracker.trackEvent(XiaomiPermissionDialogPermissionGrantedEvent)
}
}

@Test
Expand All @@ -100,6 +131,13 @@ class LoginScreenViewModelTest {
get(LoginState::navigateTo).isEqualTo(LoginNavigateTo.OpenGithubAuth)
get(LoginState::showXiaomiPermissionDialog).isFalse()
}

verifyOrder {
eventTracker.trackEvent(ClickLogInEvent)
eventTracker.trackEvent(ShowXiaomiPermissionDialogEvent)
eventTracker.trackEvent(XiaomiPermissionDialogPermissionAlreadyGrantedEvent)
eventTracker.trackEvent(OpenGithubAuthEvent)
}
}

@Test
Expand Down Expand Up @@ -134,5 +172,13 @@ class LoginScreenViewModelTest {
get(LoginState::showXiaomiPermissionDialog).isFalse()
get(LoginState::navigateTo).isEqualTo(LoginNavigateTo.OpenGithubAuth)
}

verifyOrder {
eventTracker.trackEvent(ClickLogInEvent)
eventTracker.trackEvent(ShowXiaomiPermissionDialogEvent)
eventTracker.trackEvent(XiaomiPermissionDialogPermissionGrantedEvent)
eventTracker.trackEvent(XiaomiPermissionDialogPermissionAlreadyGrantedEvent)
eventTracker.trackEvent(OpenGithubAuthEvent)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,24 @@

package com.appunite.loudius.ui.pullrequests

import com.appunite.loudius.analytics.EventTracker
import com.appunite.loudius.analytics.events.FetchPullRequestsEvent
import com.appunite.loudius.analytics.events.FetchPullRequestsFailureEvent
import com.appunite.loudius.analytics.events.FetchPullRequestsSuccessEvent
import com.appunite.loudius.analytics.events.NavigateToReviewersEvent
import com.appunite.loudius.analytics.events.PullRequestsScreenOpenedEvent
import com.appunite.loudius.analytics.events.RefreshPullRequestsEvent
import com.appunite.loudius.analytics.events.RefreshPullRequestsSuccessEvent
import com.appunite.loudius.fakes.FakePullRequestRepository
import com.appunite.loudius.network.utils.WebException
import com.appunite.loudius.util.Defaults
import com.appunite.loudius.util.MainDispatcherExtension
import com.appunite.loudius.util.neverCompletingSuspension
import io.mockk.clearMocks
import io.mockk.coEvery
import io.mockk.mockk
import io.mockk.spyk
import io.mockk.verifyOrder
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
Expand All @@ -38,7 +48,8 @@ import strikt.assertions.single
@ExtendWith(MainDispatcherExtension::class)
class PullRequestsViewModelTest {
private val pullRequestRepository = spyk(FakePullRequestRepository())
private fun createViewModel() = PullRequestsViewModel(pullRequestRepository)
private val eventTracker = mockk<EventTracker>(relaxed = true)
private fun createViewModel() = PullRequestsViewModel(pullRequestRepository, eventTracker)

@Test
fun `WHEN refresh data THEN start refreshing data and set isRefreshing to true`() = runTest {
Expand All @@ -51,6 +62,13 @@ class PullRequestsViewModelTest {
viewModel.refreshData()

expectThat(viewModel.isRefreshing).isTrue()

verifyOrder {
eventTracker.trackEvent(PullRequestsScreenOpenedEvent)
eventTracker.trackEvent(FetchPullRequestsEvent)
eventTracker.trackEvent(FetchPullRequestsSuccessEvent)
eventTracker.trackEvent(RefreshPullRequestsEvent)
}
}

@Test
Expand All @@ -60,6 +78,14 @@ class PullRequestsViewModelTest {
viewModel.refreshData()

expectThat(viewModel.isRefreshing).isFalse()

verifyOrder {
eventTracker.trackEvent(PullRequestsScreenOpenedEvent)
eventTracker.trackEvent(FetchPullRequestsEvent)
eventTracker.trackEvent(FetchPullRequestsSuccessEvent)
eventTracker.trackEvent(RefreshPullRequestsEvent)
eventTracker.trackEvent(RefreshPullRequestsSuccessEvent)
}
}

@Test
Expand All @@ -71,6 +97,14 @@ class PullRequestsViewModelTest {
expectThat(viewModel.state.data).isA<Data.Success>().and {
get(Data.Success::pullRequests).single().isEqualTo(Defaults.pullRequest())
}

verifyOrder {
eventTracker.trackEvent(PullRequestsScreenOpenedEvent)
eventTracker.trackEvent(FetchPullRequestsEvent)
eventTracker.trackEvent(FetchPullRequestsSuccessEvent)
eventTracker.trackEvent(RefreshPullRequestsEvent)
eventTracker.trackEvent(RefreshPullRequestsSuccessEvent)
}
}

@Test
Expand All @@ -80,6 +114,11 @@ class PullRequestsViewModelTest {
val viewModel = createViewModel()

expectThat(viewModel.state.data).isA<Data.Loading>()

verifyOrder {
eventTracker.trackEvent(PullRequestsScreenOpenedEvent)
eventTracker.trackEvent(FetchPullRequestsEvent)
}
}

@Test
Expand All @@ -89,6 +128,12 @@ class PullRequestsViewModelTest {
expectThat(viewModel.state.data).isA<Data.Success>().and {
get(Data.Success::pullRequests).single().isEqualTo(Defaults.pullRequest())
}

verifyOrder {
eventTracker.trackEvent(PullRequestsScreenOpenedEvent)
eventTracker.trackEvent(FetchPullRequestsEvent)
eventTracker.trackEvent(FetchPullRequestsSuccessEvent)
}
}

@Test
Expand All @@ -101,6 +146,12 @@ class PullRequestsViewModelTest {
val viewModel = createViewModel()

expectThat(viewModel.state.data).isA<Data.Error>()

verifyOrder {
eventTracker.trackEvent(PullRequestsScreenOpenedEvent)
eventTracker.trackEvent(FetchPullRequestsEvent)
eventTracker.trackEvent(FetchPullRequestsFailureEvent)
}
}

@Test
Expand All @@ -118,6 +169,14 @@ class PullRequestsViewModelTest {
expectThat(viewModel.state.data).isA<Data.Success>().and {
get(Data.Success::pullRequests).single().isEqualTo(Defaults.pullRequest())
}

verifyOrder {
eventTracker.trackEvent(PullRequestsScreenOpenedEvent)
eventTracker.trackEvent(FetchPullRequestsEvent)
eventTracker.trackEvent(FetchPullRequestsFailureEvent)
eventTracker.trackEvent(FetchPullRequestsEvent)
eventTracker.trackEvent(FetchPullRequestsSuccessEvent)
}
}

@Test
Expand All @@ -140,6 +199,13 @@ class PullRequestsViewModelTest {
pullRequest.createdAt.toString()
)
)

verifyOrder {
eventTracker.trackEvent(PullRequestsScreenOpenedEvent)
eventTracker.trackEvent(FetchPullRequestsEvent)
eventTracker.trackEvent(FetchPullRequestsSuccessEvent)
eventTracker.trackEvent(NavigateToReviewersEvent)
}
}

@Test
Expand All @@ -153,5 +219,12 @@ class PullRequestsViewModelTest {
expectThat(viewModel.state)
.get(PullRequestState::navigateToReviewers)
.isNull()

verifyOrder {
eventTracker.trackEvent(PullRequestsScreenOpenedEvent)
eventTracker.trackEvent(FetchPullRequestsEvent)
eventTracker.trackEvent(FetchPullRequestsSuccessEvent)
eventTracker.trackEvent(NavigateToReviewersEvent)
}
}
}
Loading

0 comments on commit 5541e40

Please sign in to comment.