From 170a2a53df0eb3039eccdd69237b57fcba780b48 Mon Sep 17 00:00:00 2001 From: JSPark <48265129+pknujsp@users.noreply.github.com> Date: Mon, 11 Mar 2024 21:32:55 +0900 Subject: [PATCH] =?UTF-8?q?#219=20feature:intro=20=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EB=82=B4=20=EB=A1=9C=EA=B7=B8=EC=9D=B8,=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EA=B0=80=EC=9E=85=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=83=88?= =?UTF-8?q?=EB=A1=9C=EC=9A=B4=20=ED=8C=A8=ED=82=A4=EC=A7=80=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99,=20=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85=20?= =?UTF-8?q?=EC=8B=9C=20=EB=8B=89=EB=84=A4=EC=9E=84=20=EC=86=8D=EC=84=B1=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EC=98=A4=EB=A5=98=EB=A1=9C=20=EA=B0=80?= =?UTF-8?q?=EC=9E=85=EC=9D=B4=20=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/data/sign/SignRepositoryImpl.kt | 10 +- .../datasource/sign/LoginDataSourceImpl.kt | 1 - .../datasource/sign/SignupDataSource.kt | 6 +- .../datasource/sign/SignupDataSourceImpl.kt | 1 + .../core/network/module/ServerNetwork.kt | 2 +- .../mediproject/core/ui/base/BaseFragment.kt | 4 + .../intro/{ => login}/LoginFragment.kt | 3 +- .../intro/{ => login}/LoginViewModel.kt | 2 +- .../intro/{ => signup}/SignUpFragment.kt | 21 ++-- .../feature/intro/signup/SignUpUiState.kt | 32 ++++++ .../intro/{ => signup}/SignUpViewModel.kt | 99 +++++++++---------- .../src/main/res/layout/fragment_login.xml | 5 +- .../src/main/res/layout/fragment_sign_up.xml | 35 +++---- .../src/main/res/navigation/intro_nav.xml | 6 +- feature/intro/src/main/res/values/strings.xml | 1 + .../feature/intro/LoginViewModelTest.kt | 1 + .../feature/intro/SignUpViewModelTest.kt | 21 ++-- 17 files changed, 138 insertions(+), 112 deletions(-) rename feature/intro/src/main/java/com/android/mediproject/feature/intro/{ => login}/LoginFragment.kt (98%) rename feature/intro/src/main/java/com/android/mediproject/feature/intro/{ => login}/LoginViewModel.kt (99%) rename feature/intro/src/main/java/com/android/mediproject/feature/intro/{ => signup}/SignUpFragment.kt (89%) create mode 100644 feature/intro/src/main/java/com/android/mediproject/feature/intro/signup/SignUpUiState.kt rename feature/intro/src/main/java/com/android/mediproject/feature/intro/{ => signup}/SignUpViewModel.kt (59%) diff --git a/core/data/src/main/java/com/android/mediproject/core/data/sign/SignRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/sign/SignRepositoryImpl.kt index 908f5e84f..eeaa5524d 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/sign/SignRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/sign/SignRepositoryImpl.kt @@ -1,6 +1,7 @@ package com.android.mediproject.core.data.sign import com.amazonaws.services.cognitoidentityprovider.model.UserNotConfirmedException +import com.amazonaws.services.cognitoidentityprovider.model.UsernameExistsException import com.android.mediproject.core.data.session.AccountSessionRepository import com.android.mediproject.core.datastore.AppDataStore import com.android.mediproject.core.model.sign.LoginParameter @@ -50,7 +51,11 @@ internal class SignRepositoryImpl( SignUpState.Success }, onFailure = { exception -> - SignUpState.Failed(exception) + if (exception is UsernameExistsException) { + SignUpState.UserExists + } else { + SignUpState.Failed(exception) + } }, ) @@ -72,6 +77,7 @@ sealed interface LoginState { sealed interface SignUpState { data object Success : SignUpState - data class Failed(val exception: Throwable) : SignUpState + data object UserExists : SignUpState + data class Failed(val exception: Throwable) : SignUpState } diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/LoginDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/LoginDataSourceImpl.kt index 690df52ca..db710b685 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/LoginDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/LoginDataSourceImpl.kt @@ -27,7 +27,6 @@ class LoginDataSourceImpl( override fun onFailure(exception: Exception) { continuation.resumeWithException(exception) // UserNotConfirmedException : 이메일 인증을 하지 않았을 때 발생 - // UserExistsException : 이미 가입된 이메일일 때 발생 } override fun authenticationChallenge(continuation: ChallengeContinuation?) { diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignupDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignupDataSource.kt index d49e87bd9..049ef106f 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignupDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignupDataSource.kt @@ -5,12 +5,12 @@ import com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUserAttribu import com.amazonaws.services.cognitoidentityprovider.model.SignUpResult interface SignupDataSource { - suspend fun signUp(signUpParameter: SignUpRequest): Result + suspend fun signUp(request: SignUpRequest): Result suspend fun confirmEmail(email: String, code: String): Result suspend fun resendConfirmationCode(cognitoUser: CognitoUser): Result } -private const val USER_NAME = "user_name" +private const val USER_NAME = "nickname" class SignUpRequest( val email: String, @@ -20,7 +20,7 @@ class SignUpRequest( val passwordString: String get() = password.decodeToString() val attr = CognitoUserAttributes().apply { - this.addAttribute(USER_NAME, nickName) + addAttribute(USER_NAME, nickName) } } diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignupDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignupDataSourceImpl.kt index 03efb5527..a2fdc000d 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignupDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/sign/SignupDataSourceImpl.kt @@ -27,6 +27,7 @@ class SignupDataSourceImpl( override fun onFailure(exception: Exception) { continuation.resumeWithException(exception) + // UserExistsException : 이미 가입된 이메일일 때 발생 } }, ) diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/ServerNetwork.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/ServerNetwork.kt index 9063baef2..5e868b873 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/ServerNetwork.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/ServerNetwork.kt @@ -69,7 +69,7 @@ object ServerNetwork { @Provides @Singleton - fun providesUserPool(@ApplicationContext context: Context) = CognitoUserPool( + fun providesUserPool(@ApplicationContext context: Context): CognitoUserPool = CognitoUserPool( context, BuildConfig.AWS_USER_POOL, BuildConfig.AWS_USER_CLIENT_ID, BuildConfig.AWS_USER_CLIENT_SECRET, Regions.US_EAST_2, ) diff --git a/core/ui/src/main/java/com/android/mediproject/core/ui/base/BaseFragment.kt b/core/ui/src/main/java/com/android/mediproject/core/ui/base/BaseFragment.kt index 0f2477c3c..0d90b0caa 100644 --- a/core/ui/src/main/java/com/android/mediproject/core/ui/base/BaseFragment.kt +++ b/core/ui/src/main/java/com/android/mediproject/core/ui/base/BaseFragment.kt @@ -6,6 +6,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast +import androidx.annotation.StringRes import androidx.core.net.toUri import androidx.databinding.ViewDataBinding import androidx.fragment.app.Fragment @@ -39,6 +40,9 @@ abstract class BaseFragment(private val fun toast(str: String) = Toast.makeText(requireContext(), str, Toast.LENGTH_SHORT).show() + fun toast(@StringRes str: Int) = Toast.makeText(requireContext(), str, Toast.LENGTH_SHORT).show() + + fun navigateWithUri(deepLinkUri: String) = findNavController().navigate(deepLinkUri.toUri()) fun navigateWithUriNavOptions(deepLinkUri: String, navOptions: NavOptions) = findNavController().navigate(deepLinkUri.toUri(), navOptions) diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/login/LoginFragment.kt similarity index 98% rename from feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt rename to feature/intro/src/main/java/com/android/mediproject/feature/intro/login/LoginFragment.kt index 3a96bfe2f..3d26f4bef 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/login/LoginFragment.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.feature.intro +package com.android.mediproject.feature.intro.login import android.os.Bundle @@ -15,6 +15,7 @@ import com.android.mediproject.core.common.viewmodel.repeatOnStarted import com.android.mediproject.core.model.navargs.TOHOME import com.android.mediproject.core.model.navargs.TOMYPAGE import com.android.mediproject.core.ui.base.BaseFragment +import com.android.mediproject.feature.intro.R import com.android.mediproject.feature.intro.databinding.FragmentLoginBinding import com.android.mediproject.feature.intro.verification.EmailVerficationDialogFragment import dagger.hilt.android.AndroidEntryPoint diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginViewModel.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/login/LoginViewModel.kt similarity index 99% rename from feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginViewModel.kt rename to feature/intro/src/main/java/com/android/mediproject/feature/intro/login/LoginViewModel.kt index da6fb5a50..596a52764 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginViewModel.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/login/LoginViewModel.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.feature.intro +package com.android.mediproject.feature.intro.login import androidx.lifecycle.viewModelScope import com.android.mediproject.core.common.network.Dispatcher diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/signup/SignUpFragment.kt similarity index 89% rename from feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt rename to feature/intro/src/main/java/com/android/mediproject/feature/intro/signup/SignUpFragment.kt index 5ec55e70d..82652473f 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/signup/SignUpFragment.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.feature.intro +package com.android.mediproject.feature.intro.signup import android.os.Bundle import android.view.View @@ -14,6 +14,7 @@ import com.android.mediproject.core.common.viewmodel.repeatOnStarted import com.android.mediproject.core.model.navargs.TOHOME import com.android.mediproject.core.model.navargs.TOMYPAGE import com.android.mediproject.core.ui.base.BaseFragment +import com.android.mediproject.feature.intro.R import com.android.mediproject.feature.intro.databinding.FragmentSignUpBinding import com.android.mediproject.feature.intro.verification.EmailVerficationDialogFragment import dagger.hilt.android.AndroidEntryPoint @@ -51,7 +52,7 @@ class SignUpFragment : BaseFragment(Frag viewModel = fragmentViewModel.apply { viewLifecycleOwner.apply { repeatOnStarted { eventFlow.collectLatest { handleEvent(it) } } - repeatOnStarted { signUpState.collectLatest { handleSignUpState(it) } } + repeatOnStarted { signUpUiState.collectLatest { handleSignUpState(it) } } } } setDelayTextWatcher() @@ -75,14 +76,14 @@ class SignUpFragment : BaseFragment(Frag ) } - private fun handleSignUpState(signUpState: SignUpViewModel.SignUpState) { - when (signUpState) { - is SignUpViewModel.SignUpState.SigningUp -> signingUp() - is SignUpViewModel.SignUpState.SignUpSuccess -> signUpSuccess() - is SignUpViewModel.SignUpState.SignUpFailed -> signUpFailed() - is SignUpViewModel.SignUpState.RegexError -> regexError() - is SignUpViewModel.SignUpState.Initial -> initial() - is SignUpViewModel.SignUpState.PasswordError -> passwordError() + private fun handleSignUpState(signUpUiState: SignUpUiState) { + when (signUpUiState) { + is SignUpUiState.SigningUp -> signingUp() + is SignUpUiState.Success -> signUpSuccess() + is SignUpUiState.Failed -> toast(signUpUiState.message) + is SignUpUiState.RegexError -> toast(signUpUiState.text) + is SignUpUiState.UserExists -> toast(signUpUiState.text) + is SignUpUiState.PasswordError -> toast(signUpUiState.text) } } diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/signup/SignUpUiState.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/signup/SignUpUiState.kt new file mode 100644 index 000000000..51435c268 --- /dev/null +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/signup/SignUpUiState.kt @@ -0,0 +1,32 @@ +package com.android.mediproject.feature.intro.signup + +import androidx.annotation.StringRes +import com.android.mediproject.feature.intro.R + +sealed interface SignUpUiState { + @get:StringRes val text: Int? + + data object SigningUp : SignUpUiState { + override val text: Int? = null + } + + data object RegexError : SignUpUiState { + override val text: Int = R.string.signInRegexError + } + + data object PasswordError : SignUpUiState { + override val text: Int = R.string.signUpPasswordError + } + + data object UserExists : SignUpUiState { + override val text: Int = R.string.signUpUserExists + } + + data object Success : SignUpUiState { + override val text: Int = R.string.signUpSuccess + } + + data class Failed(val message: String) : SignUpUiState { + override val text: Int? = null + } +} diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpViewModel.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/signup/SignUpViewModel.kt similarity index 59% rename from feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpViewModel.kt rename to feature/intro/src/main/java/com/android/mediproject/feature/intro/signup/SignUpViewModel.kt index 71b487079..afd5e5f23 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpViewModel.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/signup/SignUpViewModel.kt @@ -1,4 +1,4 @@ -package com.android.mediproject.feature.intro +package com.android.mediproject.feature.intro.signup import androidx.lifecycle.viewModelScope import com.android.mediproject.core.common.network.Dispatcher @@ -8,6 +8,7 @@ import com.android.mediproject.core.common.util.isPasswordValid import com.android.mediproject.core.common.viewmodel.MutableEventFlow import com.android.mediproject.core.common.viewmodel.asEventFlow import com.android.mediproject.core.data.sign.SignRepository +import com.android.mediproject.core.data.sign.SignUpState import com.android.mediproject.core.model.navargs.TOHOME import com.android.mediproject.core.model.sign.SignUpParameter import com.android.mediproject.core.ui.base.BaseViewModel @@ -24,38 +25,23 @@ class SignUpViewModel @Inject constructor( private val signUpRepository: SignRepository, @Dispatcher(MediDispatchers.IO) private val ioDispatcher: CoroutineDispatcher, ) : BaseViewModel() { + private val mutableSignUpUiState = MutableEventFlow(replay = 1) + val signUpUiState = mutableSignUpUiState.asEventFlow() - private val _signUpState = MutableStateFlow(SignUpState.Initial) - val signUpState = _signUpState.asStateFlow() + private val _eventFlow = MutableEventFlow(replay = 1) + val eventFlow = _eventFlow.asEventFlow() - private fun setSignUpState(state: SignUpState) { - _signUpState.value = state - } + private val _callBackMoveFlag = MutableStateFlow(TOHOME) + val callBackMoveFlag = _callBackMoveFlag.asStateFlow() - sealed class SignUpState { - object SigningUp : SignUpState() - object Initial : SignUpState() - object RegexError : SignUpState() - object PasswordError : SignUpState() - object SignUpSuccess : SignUpState() - data class SignUpFailed(val message: String) : SignUpState() + private fun setSignUpState(state: SignUpUiState) { + viewModelScope.launch { mutableSignUpUiState.emit(state) } } - private val _eventFlow = MutableEventFlow(replay = 1) - val eventFlow = _eventFlow.asEventFlow() - fun event(event: SignUpEvent) = viewModelScope.launch { _eventFlow.emit(event) } fun signUp() = event(SignUpEvent.SignUp) - - sealed class SignUpEvent { - object SignUp : SignUpEvent() - } - - private val _callBackMoveFlag = MutableStateFlow(TOHOME) - val callBackMoveFlag get() = _callBackMoveFlag.asStateFlow() - fun setCallBackMoveFlag(flag: Int) { _callBackMoveFlag.value = flag } @@ -63,21 +49,24 @@ class SignUpViewModel @Inject constructor( fun signUpWithCheckRegex( email: String, password: String, checkPassword: String, nickName: String, ) { - if (!checkEmailPasswordRegex(email, password)) { - signUpFaledWithRegexError() - return - } + viewModelScope.launch { + setSignUpState(SignUpUiState.SigningUp) - if (!password.contentEquals(checkPassword)) { - isNotEqualPasswordCheck() - return - } + if (!checkEmailPasswordRegex(email, password)) { + signUpFaledWithRegexError() + return@launch + } + if (!password.contentEquals(checkPassword)) { + isNotEqualPasswordCheck() + return@launch + } - signUp(email, password, nickName) + signUp(email, password, nickName) + } } private fun checkEmailPasswordRegex(email: String, password: String): Boolean { - return checkEmailRegex(email) && checkPasswordRegex(password) + return isEmailValid(email) && isPasswordValid(password) } private fun checkEmailRegex(email: String): Boolean { @@ -88,30 +77,28 @@ class SignUpViewModel @Inject constructor( return isPasswordValid(password) } - private fun signUp( + private suspend fun signUp( email: String, password: String, nickName: String, ) { - viewModelScope.launch { - val pair = initEmailPassword(email, password) - setSignUpState(SignUpState.SigningUp) - - withContext(ioDispatcher) { - signUpRepository.signUp(SignUpParameter(pair.first.concatToString(), password.toByteArray(), nickName)) - }.onSuccess { - setSignUpState(SignUpState.SignUpSuccess) - }.onFailure { - setSignUpState(SignUpState.SignUpFailed(it.message ?: "")) - } + val pair = initEmailPassword(email, password) + val signUpState = withContext(ioDispatcher) { + signUpRepository.signUp(SignUpParameter(email, pair.second, nickName)) + } + + when (signUpState) { + is SignUpState.Success -> setSignUpState(SignUpUiState.Success) + is SignUpState.UserExists -> setSignUpState(SignUpUiState.UserExists) + is SignUpState.Failed -> setSignUpState(SignUpUiState.Failed(signUpState.exception.message ?: "")) } } private fun isNotEqualPasswordCheck() { - setSignUpState(SignUpState.PasswordError) + setSignUpState(SignUpUiState.PasswordError) } - private fun initEmailPassword(email: String, password: String): Pair { + private fun initEmailPassword(email: String, password: String): Pair { return Pair(initEmail(email), initPassword(password)) } @@ -123,20 +110,22 @@ class SignUpViewModel @Inject constructor( return emailCharArray } - private fun initPassword(password: String): CharArray { - val passwordCharArray = CharArray(password.length) - password.trim().forEachIndexed { index, c -> - passwordCharArray[index] = c - } - return passwordCharArray + private fun initPassword(password: String): ByteArray { + return password.trim().toByteArray() } private fun signUpFaledWithRegexError() { - setSignUpState(SignUpState.RegexError) + setSignUpState(SignUpUiState.RegexError) } private fun fillEmailPassword(email: CharArray, password: CharArray) { email.fill('\u0000') password.fill('\u0000') } + + + sealed interface SignUpEvent { + data object SignUp : SignUpEvent + } + } diff --git a/feature/intro/src/main/res/layout/fragment_login.xml b/feature/intro/src/main/res/layout/fragment_login.xml index f30720eaa..2180bab86 100644 --- a/feature/intro/src/main/res/layout/fragment_login.xml +++ b/feature/intro/src/main/res/layout/fragment_login.xml @@ -4,15 +4,16 @@ xmlns:tools="http://schemas.android.com/tools"> + + type="com.android.mediproject.feature.intro.login.LoginViewModel" /> + tools:context=".login.LoginFragment"> + type="com.android.mediproject.feature.intro.signup.SignUpViewModel" /> + android:layout_height="match_parent"> + app:layout_constraintGuide_begin="@dimen/loginSignUpMarginHorizontal" /> + app:layout_constraintGuide_end="@dimen/loginSignUpMarginHorizontal" /> + app:title="@string/signUp" /> + app:layout_constraintTop_toBottomOf="@id/signUpBar"> + app:title="@string/email" /> + app:title="@string/password" /> + app:title="@string/checkedPassword" /> + app:title="@string/nickName" /> + app:title="완료" /> - \ No newline at end of file + diff --git a/feature/intro/src/main/res/navigation/intro_nav.xml b/feature/intro/src/main/res/navigation/intro_nav.xml index 8bf8beba9..846265236 100644 --- a/feature/intro/src/main/res/navigation/intro_nav.xml +++ b/feature/intro/src/main/res/navigation/intro_nav.xml @@ -19,7 +19,7 @@ @@ -28,7 +28,7 @@ - \ No newline at end of file + diff --git a/feature/intro/src/main/res/values/strings.xml b/feature/intro/src/main/res/values/strings.xml index b146b138d..fe5e0992c 100644 --- a/feature/intro/src/main/res/values/strings.xml +++ b/feature/intro/src/main/res/values/strings.xml @@ -21,4 +21,5 @@ 다음 이메일로 인증 코드가 전송되었습니다 인증 실패 인증 완료 + 이미 사용중인 이메일입니다 diff --git a/feature/intro/src/test/java/com/android/mediproject/feature/intro/LoginViewModelTest.kt b/feature/intro/src/test/java/com/android/mediproject/feature/intro/LoginViewModelTest.kt index c1a2147ab..5dc27613b 100644 --- a/feature/intro/src/test/java/com/android/mediproject/feature/intro/LoginViewModelTest.kt +++ b/feature/intro/src/test/java/com/android/mediproject/feature/intro/LoginViewModelTest.kt @@ -4,6 +4,7 @@ package com.android.mediproject.feature.intro import com.android.mediproject.core.test.MainCoroutineRule import com.android.mediproject.core.test.repositories.FakeSignRepository import com.android.mediproject.core.test.repositories.FakeUserInfoRepository +import com.android.mediproject.feature.intro.login.LoginViewModel import kotlinx.coroutines.test.UnconfinedTestDispatcher import org.junit.Assert.assertThat import org.junit.Before diff --git a/feature/intro/src/test/java/com/android/mediproject/feature/intro/SignUpViewModelTest.kt b/feature/intro/src/test/java/com/android/mediproject/feature/intro/SignUpViewModelTest.kt index 525384b69..770015996 100644 --- a/feature/intro/src/test/java/com/android/mediproject/feature/intro/SignUpViewModelTest.kt +++ b/feature/intro/src/test/java/com/android/mediproject/feature/intro/SignUpViewModelTest.kt @@ -3,6 +3,7 @@ package com.android.mediproject.feature.intro import com.android.mediproject.core.test.repositories.FakeSignRepository import com.android.mediproject.core.test.repositories.FakeUserInfoRepository import com.android.mediproject.core.test.MainCoroutineRule +import com.android.mediproject.feature.intro.signup.SignUpViewModel import kotlinx.coroutines.test.UnconfinedTestDispatcher import org.junit.Assert.assertThat import org.junit.Before @@ -42,8 +43,8 @@ class SignUpViewModelTest { ) //then - val actual = viewModel.signUpState.value - val expected = SignUpViewModel.SignUpState.RegexError + val actual = viewModel.signUpUiState.value + val expected = SignUpViewModel.SignUpUiState.RegexError assertThat(actual).isEqualTo(expected) } @@ -63,8 +64,8 @@ class SignUpViewModelTest { ) //then - val actual = viewModel.signUpState.value - val expected = SignUpViewModel.SignUpState.RegexError + val actual = viewModel.signUpUiState.value + val expected = SignUpViewModel.SignUpUiState.RegexError assertThat(actual).isEqualTo(expected) } @@ -84,8 +85,8 @@ class SignUpViewModelTest { ) //then - val actual = viewModel.signUpState.value - val expected = SignUpViewModel.SignUpState.RegexError + val actual = viewModel.signUpUiState.value + val expected = SignUpViewModel.SignUpUiState.RegexError assertThat(actual).isEqualTo(expected) } @@ -106,8 +107,8 @@ class SignUpViewModelTest { ) //then - val actual = viewModel.signUpState.value - val expected = SignUpViewModel.SignUpState.PasswordError + val actual = viewModel.signUpUiState.value + val expected = SignUpViewModel.SignUpUiState.PasswordError assertThat(actual).isEqualTo(expected) } @@ -127,8 +128,8 @@ class SignUpViewModelTest { ) //then - val actual = viewModel.signUpState.value - val expected = SignUpViewModel.SignUpState.SignUpSuccess + val actual = viewModel.signUpUiState.value + val expected = SignUpViewModel.SignUpUiState.SignUpUiSuccess assertThat(actual).isEqualTo(expected) } }