PM-19335 add throwable val to generator error results (#4894)

This commit is contained in:
Dave Severns
2025-03-18 13:08:11 -04:00
committed by GitHub
parent f22156389b
commit 475a82e0fb
12 changed files with 44 additions and 28 deletions

View File

@@ -130,7 +130,7 @@ class GeneratorRepositoryImpl(
}
GeneratedPasswordResult.Success(generatedPassword)
},
onFailure = { GeneratedPasswordResult.InvalidRequest },
onFailure = { GeneratedPasswordResult.InvalidRequest(error = it) },
)
override suspend fun generatePassphrase(
@@ -149,7 +149,7 @@ class GeneratorRepositoryImpl(
}
GeneratedPassphraseResult.Success(generatedPassphrase)
},
onFailure = { GeneratedPassphraseResult.InvalidRequest },
onFailure = { GeneratedPassphraseResult.InvalidRequest(error = it) },
)
override suspend fun generatePlusAddressedEmail(
@@ -161,7 +161,7 @@ class GeneratorRepositoryImpl(
GeneratedPlusAddressedUsernameResult.Success(generatedEmail)
},
onFailure = {
GeneratedPlusAddressedUsernameResult.InvalidRequest
GeneratedPlusAddressedUsernameResult.InvalidRequest(error = it)
},
)
@@ -174,7 +174,7 @@ class GeneratorRepositoryImpl(
GeneratedCatchAllUsernameResult.Success(generatedEmail)
},
onFailure = {
GeneratedCatchAllUsernameResult.InvalidRequest
GeneratedCatchAllUsernameResult.InvalidRequest(error = it)
},
)
@@ -187,7 +187,7 @@ class GeneratorRepositoryImpl(
GeneratedRandomWordUsernameResult.Success(generatedUsername)
},
onFailure = {
GeneratedRandomWordUsernameResult.InvalidRequest
GeneratedRandomWordUsernameResult.InvalidRequest(error = it)
},
)
@@ -200,7 +200,7 @@ class GeneratorRepositoryImpl(
GeneratedForwardedServiceUsernameResult.Success(generatedEmail)
},
onFailure = {
GeneratedForwardedServiceUsernameResult.InvalidRequest(it.message)
GeneratedForwardedServiceUsernameResult.InvalidRequest(it.message, error = it)
},
)
}

View File

@@ -15,5 +15,5 @@ sealed class GeneratedCatchAllUsernameResult {
/**
* There was an error during the operation.
*/
data object InvalidRequest : GeneratedCatchAllUsernameResult()
data class InvalidRequest(val error: Throwable) : GeneratedCatchAllUsernameResult()
}

View File

@@ -14,5 +14,8 @@ sealed class GeneratedForwardedServiceUsernameResult {
/**
* There was an error during the operation.
*/
data class InvalidRequest(val message: String?) : GeneratedForwardedServiceUsernameResult()
data class InvalidRequest(
val message: String?,
val error: Throwable,
) : GeneratedForwardedServiceUsernameResult()
}

View File

@@ -12,5 +12,5 @@ sealed class GeneratedPassphraseResult {
/**
* There was an error during the operation.
*/
data object InvalidRequest : GeneratedPassphraseResult()
data class InvalidRequest(val error: Throwable) : GeneratedPassphraseResult()
}

View File

@@ -13,5 +13,5 @@ sealed class GeneratedPasswordResult {
/**
* There was an error during the operation.
*/
data object InvalidRequest : GeneratedPasswordResult()
data class InvalidRequest(val error: Throwable) : GeneratedPasswordResult()
}

View File

@@ -14,5 +14,5 @@ sealed class GeneratedPlusAddressedUsernameResult {
/**
* There was an error during the operation.
*/
data object InvalidRequest : GeneratedPlusAddressedUsernameResult()
data class InvalidRequest(val error: Throwable) : GeneratedPlusAddressedUsernameResult()
}

View File

@@ -15,5 +15,5 @@ sealed class GeneratedRandomWordUsernameResult {
/**
* There was an error during the operation.
*/
data object InvalidRequest : GeneratedRandomWordUsernameResult()
data class InvalidRequest(val error: Throwable) : GeneratedRandomWordUsernameResult()
}

View File

@@ -91,7 +91,7 @@ class MasterPasswordGeneratorViewModel @Inject constructor(
private fun handleUpdatedPassphraseResult(passphraseResult: GeneratedPassphraseResult) {
when (passphraseResult) {
GeneratedPassphraseResult.InvalidRequest -> {
is GeneratedPassphraseResult.InvalidRequest -> {
sendEvent(
MasterPasswordGeneratorEvent.ShowSnackbar(
R.string.an_error_has_occurred.asText(),

View File

@@ -736,7 +736,7 @@ class GeneratorViewModel @Inject constructor(
}
}
GeneratedPasswordResult.InvalidRequest -> {
is GeneratedPasswordResult.InvalidRequest -> {
sendEvent(GeneratorEvent.ShowSnackbar(R.string.an_error_has_occurred.asText()))
}
}
@@ -752,7 +752,7 @@ class GeneratorViewModel @Inject constructor(
}
}
GeneratedPassphraseResult.InvalidRequest -> {
is GeneratedPassphraseResult.InvalidRequest -> {
sendEvent(GeneratorEvent.ShowSnackbar(R.string.an_error_has_occurred.asText()))
}
}
@@ -768,7 +768,7 @@ class GeneratorViewModel @Inject constructor(
}
}
GeneratedPlusAddressedUsernameResult.InvalidRequest -> {
is GeneratedPlusAddressedUsernameResult.InvalidRequest -> {
sendEvent(GeneratorEvent.ShowSnackbar(R.string.an_error_has_occurred.asText()))
}
}
@@ -784,7 +784,7 @@ class GeneratorViewModel @Inject constructor(
}
}
GeneratedCatchAllUsernameResult.InvalidRequest -> {
is GeneratedCatchAllUsernameResult.InvalidRequest -> {
sendEvent(GeneratorEvent.ShowSnackbar(R.string.an_error_has_occurred.asText()))
}
}
@@ -800,7 +800,7 @@ class GeneratorViewModel @Inject constructor(
}
}
GeneratedRandomWordUsernameResult.InvalidRequest -> {
is GeneratedRandomWordUsernameResult.InvalidRequest -> {
sendEvent(GeneratorEvent.ShowSnackbar(R.string.an_error_has_occurred.asText()))
}
}

View File

@@ -199,7 +199,9 @@ class GeneratorRepositoryTest {
val result = repository.generatePassword(request, true)
assertEquals(GeneratedPasswordResult.InvalidRequest, result)
assertEquals(
GeneratedPasswordResult.InvalidRequest(error = exception), result,
)
coVerify { generatorSdkSource.generatePassword(request) }
}
@@ -257,7 +259,9 @@ class GeneratorRepositoryTest {
val result = repository.generatePassphrase(request)
assertEquals(GeneratedPassphraseResult.InvalidRequest, result)
assertEquals(
GeneratedPassphraseResult.InvalidRequest(error = exception), result,
)
coVerify { generatorSdkSource.generatePassphrase(request) }
}
@@ -296,7 +300,9 @@ class GeneratorRepositoryTest {
val result = repository.generatePlusAddressedEmail(request)
assertEquals(GeneratedPlusAddressedUsernameResult.InvalidRequest, result)
assertEquals(
GeneratedPlusAddressedUsernameResult.InvalidRequest(error = exception), result,
)
coVerify { generatorSdkSource.generatePlusAddressedEmail(request) }
}
@@ -331,7 +337,9 @@ class GeneratorRepositoryTest {
val result = repository.generateCatchAllEmail(request)
assertEquals(GeneratedCatchAllUsernameResult.InvalidRequest, result)
assertEquals(
GeneratedCatchAllUsernameResult.InvalidRequest(error = exception), result,
)
coVerify { generatorSdkSource.generateCatchAllEmail(request) }
}
@@ -366,7 +374,9 @@ class GeneratorRepositoryTest {
val result = repository.generateRandomWordUsername(request)
assertEquals(GeneratedRandomWordUsernameResult.InvalidRequest, result)
assertEquals(
GeneratedRandomWordUsernameResult.InvalidRequest(error = exception), result,
)
coVerify { generatorSdkSource.generateRandomWord(request) }
}
@@ -409,7 +419,10 @@ class GeneratorRepositoryTest {
val result = repository.generateForwardedServiceUsername(request)
assertEquals(
GeneratedForwardedServiceUsernameResult.InvalidRequest(exception.message),
GeneratedForwardedServiceUsernameResult.InvalidRequest(
message = exception.message,
error = exception,
),
result,
)
coVerify { generatorSdkSource.generateForwardedServiceEmail(request) }

View File

@@ -37,7 +37,7 @@ class MasterPasswordGeneratorViewModelTest : BaseViewModelTest() {
@Suppress("MaxLineLength")
fun `With no saved state and failed generator result, initial password state is default value`() {
fakeGeneratorRepository.setMockGeneratePassphraseResult(
result = GeneratedPassphraseResult.InvalidRequest,
result = GeneratedPassphraseResult.InvalidRequest(error = Throwable("Fail")),
)
val viewModel = createViewModel()
@@ -91,7 +91,7 @@ class MasterPasswordGeneratorViewModelTest : BaseViewModelTest() {
val viewModel = createViewModel()
fakeGeneratorRepository.setMockGeneratePassphraseResult(
GeneratedPassphraseResult.InvalidRequest,
GeneratedPassphraseResult.InvalidRequest(error = Throwable("Fail")),
)
viewModel.eventFlow.test {

View File

@@ -403,7 +403,7 @@ class GeneratorViewModelTest : BaseViewModelTest() {
val viewModel = createViewModel()
fakeGeneratorRepository.setMockGeneratePasswordResult(
GeneratedPasswordResult.InvalidRequest,
GeneratedPasswordResult.InvalidRequest(error = Throwable("Fail")),
)
viewModel.trySendAction(GeneratorAction.RegenerateClick)
@@ -465,7 +465,7 @@ class GeneratorViewModelTest : BaseViewModelTest() {
val viewModel = createViewModel(initialPassphraseState)
fakeGeneratorRepository.setMockGeneratePassphraseResult(
GeneratedPassphraseResult.InvalidRequest,
GeneratedPassphraseResult.InvalidRequest(error = Throwable("Fail")),
)
viewModel.trySendAction(GeneratorAction.RegenerateClick)