Add run method to EnsureCalledOnce and EnsureCalledOnceWithParam to ensure that assertSuccess is always called.

This commit is contained in:
Benoit Marty 2024-01-08 09:55:22 +01:00
parent 6798352fb7
commit ba2c297118
2 changed files with 47 additions and 37 deletions

View file

@ -57,19 +57,19 @@ class LogoutViewTest {
@Test @Test
fun `clicking on back invoke back callback`() { fun `clicking on back invoke back callback`() {
val eventsRecorder = EventsRecorder<LogoutEvents>(expectEvents = false) val eventsRecorder = EventsRecorder<LogoutEvents>(expectEvents = false)
val callback = EnsureCalledOnce() EnsureCalledOnce().run { callback ->
rule.setContent { rule.setContent {
LogoutView( LogoutView(
aLogoutState( aLogoutState(
eventSink = eventsRecorder eventSink = eventsRecorder
), ),
onChangeRecoveryKeyClicked = EnsureNeverCalled(), onChangeRecoveryKeyClicked = EnsureNeverCalled(),
onBackClicked = callback, onBackClicked = callback,
onSuccessLogout = EnsureNeverCalledWithParam(), onSuccessLogout = EnsureNeverCalledWithParam(),
) )
}
rule.pressBack()
} }
rule.pressBack()
callback.assertSuccess()
} }
@Test @Test
@ -112,37 +112,37 @@ class LogoutViewTest {
fun `success logout invoke onSuccessLogout`() { fun `success logout invoke onSuccessLogout`() {
val data = "data" val data = "data"
val eventsRecorder = EventsRecorder<LogoutEvents>(expectEvents = false) val eventsRecorder = EventsRecorder<LogoutEvents>(expectEvents = false)
val callback = EnsureCalledOnceWithParam<String?>(data) EnsureCalledOnceWithParam<String?>(data).run { callback ->
rule.setContent { rule.setContent {
LogoutView( LogoutView(
aLogoutState( aLogoutState(
logoutAction = AsyncAction.Success(data), logoutAction = AsyncAction.Success(data),
eventSink = eventsRecorder eventSink = eventsRecorder
), ),
onChangeRecoveryKeyClicked = EnsureNeverCalled(), onChangeRecoveryKeyClicked = EnsureNeverCalled(),
onBackClicked = EnsureNeverCalled(), onBackClicked = EnsureNeverCalled(),
onSuccessLogout = callback, onSuccessLogout = callback,
) )
}
} }
callback.assertSuccess()
} }
@Test @Test
fun `last session setting button invoke onChangeRecoveryKeyClicked`() { fun `last session setting button invoke onChangeRecoveryKeyClicked`() {
val eventsRecorder = EventsRecorder<LogoutEvents>(expectEvents = false) val eventsRecorder = EventsRecorder<LogoutEvents>(expectEvents = false)
val callback = EnsureCalledOnce() EnsureCalledOnce().run { callback ->
rule.setContent { rule.setContent {
LogoutView( LogoutView(
aLogoutState( aLogoutState(
isLastSession = true, isLastSession = true,
eventSink = eventsRecorder eventSink = eventsRecorder
), ),
onChangeRecoveryKeyClicked = callback, onChangeRecoveryKeyClicked = callback,
onBackClicked = EnsureNeverCalled(), onBackClicked = EnsureNeverCalled(),
onSuccessLogout = EnsureNeverCalledWithParam(), onSuccessLogout = EnsureNeverCalledWithParam(),
) )
}
rule.clickOn(CommonStrings.common_settings)
} }
rule.clickOn(CommonStrings.common_settings)
callback.assertSuccess()
} }
} }

View file

@ -27,6 +27,11 @@ class EnsureCalledOnce : () -> Unit {
throw AssertionError("Expected to be called once, but was called $counter times") throw AssertionError("Expected to be called once, but was called $counter times")
} }
} }
fun run(block: (callback: EnsureCalledOnce) -> Unit) {
block(this)
assertSuccess()
}
} }
class EnsureCalledOnceWithParam<T>( class EnsureCalledOnceWithParam<T>(
@ -45,4 +50,9 @@ class EnsureCalledOnceWithParam<T>(
throw AssertionError("Expected to be called once, but was called $counter times") throw AssertionError("Expected to be called once, but was called $counter times")
} }
} }
fun run(block: (callback: EnsureCalledOnceWithParam<T>) -> Unit) {
block(this)
assertSuccess()
}
} }