diff options
| author | David Göransson <david.goransson@mullvad.net> | 2024-08-06 16:30:26 +0200 |
|---|---|---|
| committer | David Göransson <david.goransson@mullvad.net> | 2024-08-06 16:30:26 +0200 |
| commit | a731328ba41676ab2ca911e7ec7e423c51a89fe7 (patch) | |
| tree | ad459a74a62b44aa19ddd14b89d5db7a37c83faa /android | |
| parent | 0a9158eb70ebe7cdbbdc8ac643800cd635cf33f1 (diff) | |
| parent | 8be1ed95c772e8d0e9e2d24614a6445a362a02d6 (diff) | |
| download | mullvadvpn-a731328ba41676ab2ca911e7ec7e423c51a89fe7.tar.xz mullvadvpn-a731328ba41676ab2ca911e7ec7e423c51a89fe7.zip | |
Merge branch 'name-is-already-taken-error-regression-droid-1227'
Diffstat (limited to 'android')
6 files changed, 23 insertions, 12 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/dialog/EditCustomListNameDialogTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/dialog/EditCustomListNameDialogTest.kt index 102c3c1fb9..d43a862037 100644 --- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/dialog/EditCustomListNameDialogTest.kt +++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/dialog/EditCustomListNameDialogTest.kt @@ -12,6 +12,7 @@ import net.mullvad.mullvadvpn.compose.createEdgeToEdgeComposeExtension import net.mullvad.mullvadvpn.compose.setContentWithTheme import net.mullvad.mullvadvpn.compose.state.EditCustomListNameUiState import net.mullvad.mullvadvpn.compose.test.EDIT_CUSTOM_LIST_DIALOG_INPUT_TEST_TAG +import net.mullvad.mullvadvpn.lib.model.CustomListName import net.mullvad.mullvadvpn.lib.model.NameAlreadyExists import net.mullvad.mullvadvpn.lib.model.UnknownCustomListError import net.mullvad.mullvadvpn.usecase.customlists.RenameError @@ -46,7 +47,10 @@ class EditCustomListNameDialogTest { fun givenCustomListExistsShouldShowCustomListExitsErrorText() = composeExtension.use { // Arrange - val state = EditCustomListNameUiState(error = RenameError(NameAlreadyExists("name"))) + val state = + EditCustomListNameUiState( + error = RenameError(NameAlreadyExists(CustomListName.fromString("name"))) + ) setContentWithTheme { EditCustomListNameDialog(state = state) } // Assert diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/repository/CustomListsRepositoryTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/repository/CustomListsRepositoryTest.kt index 4b8a524e5c..09b5f4925b 100644 --- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/repository/CustomListsRepositoryTest.kt +++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/repository/CustomListsRepositoryTest.kt @@ -146,7 +146,7 @@ class CustomListsRepositoryTest { // Arrange val customListId = CustomListId("1") val customListName = CustomListName.fromString("CUSTOM") - val expectedResult = NameAlreadyExists(customListName.value).left() + val expectedResult = NameAlreadyExists(customListName).left() val mockSettings: Settings = mockk() val mockCustomList = CustomList( diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/usecase/CustomListActionUseCaseTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/usecase/CustomListActionUseCaseTest.kt index 3528d1bfa2..5af19ade8b 100644 --- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/usecase/CustomListActionUseCaseTest.kt +++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/usecase/CustomListActionUseCaseTest.kt @@ -127,9 +127,9 @@ class CustomListActionUseCaseTest { val action = CustomListAction.Rename(id = customListId, name = name, newName = newName) coEvery { mockCustomListsRepository.updateCustomListName(id = customListId, name = newName) - } returns NameAlreadyExists(newName.value).left() + } returns NameAlreadyExists(newName).left() - val expectedError = RenameError(NameAlreadyExists(newName.value)).left() + val expectedError = RenameError(NameAlreadyExists(newName)).left() // Act val result = customListActionUseCase(action) diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/EditCustomListNameDialogViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/EditCustomListNameDialogViewModelTest.kt index faf83da7a8..83ddaec36e 100644 --- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/EditCustomListNameDialogViewModelTest.kt +++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/EditCustomListNameDialogViewModelTest.kt @@ -55,16 +55,16 @@ class EditCustomListNameDialogViewModelTest { fun `when failing to rename a list should update ui state with error`() = runTest { // Arrange val customListId = CustomListId("id2") - val customListName = "list2" + val customListName = CustomListName.fromString("list2") val expectedError = RenameError(NameAlreadyExists(customListName)) - val viewModel = createViewModel(customListId, customListName) + val viewModel = createViewModel(customListId, customListName.value) coEvery { mockCustomListActionUseCase(any<CustomListAction.Rename>()) } returns expectedError.left() // Act, Assert viewModel.uiState.test { awaitItem() // Default state - viewModel.updateCustomListName(customListName) + viewModel.updateCustomListName(customListName.value) assertEquals(expectedError, awaitItem().error) } } @@ -74,16 +74,16 @@ class EditCustomListNameDialogViewModelTest { runTest { // Arrange val customListId = CustomListId("id") - val customListName = "list" + val customListName = CustomListName.fromString("list") val expectedError = RenameError(NameAlreadyExists(customListName)) - val viewModel = createViewModel(customListId, customListName) + val viewModel = createViewModel(customListId, customListName.value) coEvery { mockCustomListActionUseCase(any<CustomListAction.Rename>()) } returns expectedError.left() // Act, Assert viewModel.uiState.test { awaitItem() // Default state - viewModel.updateCustomListName(customListName) + viewModel.updateCustomListName(customListName.value) assertEquals(expectedError, awaitItem().error) // Showing error } } diff --git a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt index 7f1ae90b45..95679cb43d 100644 --- a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt +++ b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt @@ -77,6 +77,7 @@ import net.mullvad.mullvadvpn.lib.model.GetDeviceListError import net.mullvad.mullvadvpn.lib.model.GetDeviceStateError import net.mullvad.mullvadvpn.lib.model.GetVersionInfoError import net.mullvad.mullvadvpn.lib.model.LoginAccountError +import net.mullvad.mullvadvpn.lib.model.NameAlreadyExists import net.mullvad.mullvadvpn.lib.model.NewAccessMethodSetting import net.mullvad.mullvadvpn.lib.model.ObfuscationSettings import net.mullvad.mullvadvpn.lib.model.Ownership as ModelOwnership @@ -492,7 +493,12 @@ class ManagementService( suspend fun updateCustomList(customList: ModelCustomList): Either<UpdateCustomListError, Unit> = Either.catch { grpc.updateCustomList(customList.fromDomain()) } - .mapLeft(::UnknownCustomListError) + .mapLeftStatus { + when (it.status.code) { + Status.Code.ALREADY_EXISTS -> NameAlreadyExists(customList.name) + else -> UnknownCustomListError(it) + } + } .mapEmpty() suspend fun deleteCustomList(id: CustomListId): Either<DeleteCustomListError, Unit> = diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/UpdateCustomListError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/UpdateCustomListError.kt index ef49018dca..e666ca3f59 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/UpdateCustomListError.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/UpdateCustomListError.kt @@ -22,7 +22,8 @@ sealed interface UpdateCustomListLocationsError { sealed interface UpdateCustomListError -data class NameAlreadyExists(val name: String) : UpdateCustomListError, UpdateCustomListNameError +data class NameAlreadyExists(val name: CustomListName) : + UpdateCustomListError, UpdateCustomListNameError data class UnknownCustomListError(val throwable: Throwable) : UpdateCustomListError, |
