diff --git a/app/src/main/kotlin/com/wire/android/ui/newauthentication/login/NewLoginViewModel.kt b/app/src/main/kotlin/com/wire/android/ui/newauthentication/login/NewLoginViewModel.kt index 4c7ede6810..c2ecbb2582 100644 --- a/app/src/main/kotlin/com/wire/android/ui/newauthentication/login/NewLoginViewModel.kt +++ b/app/src/main/kotlin/com/wire/android/ui/newauthentication/login/NewLoginViewModel.kt @@ -48,7 +48,7 @@ import kotlin.time.Duration.Companion.seconds @HiltViewModel class NewLoginViewModel @Inject constructor( private val authServerConfigProvider: AuthServerConfigProvider, - private val emailOrSSOCodeValidator: EmailOrSSOCodeValidator, + private val validateEmailOrSSOCode: ValidateEmailOrSSOCodeUseCase, private val savedStateHandle: SavedStateHandle, ) : ViewModel() { private val loginNavArgs: LoginNavArgs = savedStateHandle.navArgs() @@ -88,7 +88,7 @@ class NewLoginViewModel @Inject constructor( */ fun onLoginStarted(onSuccess: () -> Unit) { viewModelScope.launch { - if (emailOrSSOCodeValidator.validate(userIdentifierTextState.text.trim())) { + if (validateEmailOrSSOCode(userIdentifierTextState.text.trim())) { updateLoginFlowState(LoginState.Loading) delay(1.seconds) // TODO(ym): here the call to the use case should be done. updateLoginFlowState(LoginState.Default) diff --git a/app/src/main/kotlin/com/wire/android/ui/newauthentication/login/EmailOrSSOCodeValidator.kt b/app/src/main/kotlin/com/wire/android/ui/newauthentication/login/ValidateEmailOrSSOCodeUseCase.kt similarity index 93% rename from app/src/main/kotlin/com/wire/android/ui/newauthentication/login/EmailOrSSOCodeValidator.kt rename to app/src/main/kotlin/com/wire/android/ui/newauthentication/login/ValidateEmailOrSSOCodeUseCase.kt index 981dcab9a9..508d9a23da 100644 --- a/app/src/main/kotlin/com/wire/android/ui/newauthentication/login/EmailOrSSOCodeValidator.kt +++ b/app/src/main/kotlin/com/wire/android/ui/newauthentication/login/ValidateEmailOrSSOCodeUseCase.kt @@ -27,14 +27,14 @@ import javax.inject.Inject * Validates the input for a SSO code or an email address valid format. */ @ViewModelScoped -class EmailOrSSOCodeValidator @Inject constructor( +class ValidateEmailOrSSOCodeUseCase @Inject constructor( val validateEmail: ValidateEmailUseCase, val validateSSOCode: ValidateSSOCodeUseCase ) { /** * Validates the input for a SSO code or an email address valid format. */ - fun validate(input: CharSequence): Boolean { + operator fun invoke(input: CharSequence): Boolean { return when { input.startsWith(ValidateSSOCodeUseCase.SSO_CODE_WIRE_PREFIX) -> { validateSSOCode(input.toString()) is ValidateSSOCodeResult.Valid diff --git a/app/src/test/kotlin/com/wire/android/ui/newauthentication/login/NewLoginViewModelTest.kt b/app/src/test/kotlin/com/wire/android/ui/newauthentication/login/NewLoginViewModelTest.kt index 70c7dcfbb3..6a25fd93b7 100644 --- a/app/src/test/kotlin/com/wire/android/ui/newauthentication/login/NewLoginViewModelTest.kt +++ b/app/src/test/kotlin/com/wire/android/ui/newauthentication/login/NewLoginViewModelTest.kt @@ -53,7 +53,7 @@ class NewLoginViewModelTest { @MockK private lateinit var savedStateHandle: SavedStateHandle val authServerConfigProvider: AuthServerConfigProvider = mockk() - val emailOrSSOCodeValidator: EmailOrSSOCodeValidator = mockk() + val validateEmailOrSSOCodeUseCase: ValidateEmailOrSSOCodeUseCase = mockk() val onSuccess: () -> Unit = mockk() @@ -66,12 +66,12 @@ class NewLoginViewModelTest { } fun withEmailOrSSOCodeValidatorReturning(result: Boolean = true) = apply { - every { emailOrSSOCodeValidator.validate(any()) } returns result + every { validateEmailOrSSOCodeUseCase(any()) } returns result } fun arrange() = this to NewLoginViewModel( authServerConfigProvider, - emailOrSSOCodeValidator, + validateEmailOrSSOCodeUseCase, savedStateHandle ) } diff --git a/app/src/test/kotlin/com/wire/android/ui/newauthentication/login/EmailOrSSOCodeValidatorTest.kt b/app/src/test/kotlin/com/wire/android/ui/newauthentication/login/ValidateEmailOrSSOCodeUseCaseTest.kt similarity index 89% rename from app/src/test/kotlin/com/wire/android/ui/newauthentication/login/EmailOrSSOCodeValidatorTest.kt rename to app/src/test/kotlin/com/wire/android/ui/newauthentication/login/ValidateEmailOrSSOCodeUseCaseTest.kt index 91631e5edb..7b6fd46fcb 100644 --- a/app/src/test/kotlin/com/wire/android/ui/newauthentication/login/EmailOrSSOCodeValidatorTest.kt +++ b/app/src/test/kotlin/com/wire/android/ui/newauthentication/login/ValidateEmailOrSSOCodeUseCaseTest.kt @@ -9,7 +9,7 @@ import io.mockk.verify import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test -class EmailOrSSOCodeValidatorTest { +class ValidateEmailOrSSOCodeUseCaseTest { @Test fun `given an input, when is an email and valid, then return true`() { @@ -17,7 +17,7 @@ class EmailOrSSOCodeValidatorTest { .withValidateEmailUseCaseReturning(true) .arrange() - val result = sut.validate("user@wire.com") + val result = sut.invoke("user@wire.com") verify { arrangement.validateEmailUseCase(any()) } verify(exactly = 0) { arrangement.validateSSOCodeUseCase(any()) } @@ -30,7 +30,7 @@ class EmailOrSSOCodeValidatorTest { .withValidateEmailUseCaseReturning(false) .arrange() - val result = sut.validate("user@") + val result = sut.invoke("user@") verify { arrangement.validateEmailUseCase(any()) } verify(exactly = 0) { arrangement.validateSSOCodeUseCase(any()) } @@ -44,7 +44,7 @@ class EmailOrSSOCodeValidatorTest { .withValidateSSOCodeUseCaseReturning(ValidateSSOCodeResult.Valid(code)) .arrange() - val result = sut.validate("wire-$code") + val result = sut.invoke("wire-$code") verify { arrangement.validateSSOCodeUseCase(any()) } verify(exactly = 0) { arrangement.validateEmailUseCase(any()) } @@ -58,7 +58,7 @@ class EmailOrSSOCodeValidatorTest { .withValidateSSOCodeUseCaseReturning(ValidateSSOCodeResult.Invalid) .arrange() - val result = sut.validate("wire-$code") + val result = sut.invoke("wire-$code") verify { arrangement.validateSSOCodeUseCase(any()) } verify(exactly = 0) { arrangement.validateEmailUseCase(any()) } @@ -72,7 +72,7 @@ class EmailOrSSOCodeValidatorTest { .withValidateEmailUseCaseReturning(false) .arrange() - val result = sut.validate("nothing-valid") + val result = sut.invoke("nothing-valid") verify(exactly = 1) { arrangement.validateEmailUseCase(any()) } verify(exactly = 0) { arrangement.validateSSOCodeUseCase(any()) } @@ -92,7 +92,7 @@ class EmailOrSSOCodeValidatorTest { every { validateSSOCodeUseCase(any()) } returns result } - fun arrange() = this to EmailOrSSOCodeValidator(validateEmailUseCase, validateSSOCodeUseCase) + fun arrange() = this to ValidateEmailOrSSOCodeUseCase(validateEmailUseCase, validateSSOCodeUseCase) } }