diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/filtered/FilteredDeckOptionsViewModel.kt b/AnkiDroid/src/main/java/com/ichi2/anki/filtered/FilteredDeckOptionsViewModel.kt index ba73ac603a05..96eddfb4c745 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/filtered/FilteredDeckOptionsViewModel.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/filtered/FilteredDeckOptionsViewModel.kt @@ -155,7 +155,13 @@ class FilteredDeckOptionsViewModel( buildBrowserQueryResult .onFailure { throwable -> updateCurrentState { - currentState().copy(throwable = InvalidSearchException(cause = throwable)) + currentState().copy( + throwable = + InvalidSearchException( + cause = throwable, + message = throwable.localizedMessage, + ), + ) } }.onSuccess { updateCurrentState { currentState().copy(browserQuery = buildBrowserQueryResult.getOrThrow()) } diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/filtered/FilteredDeckOptionsViewModelTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/filtered/FilteredDeckOptionsViewModelTest.kt index 018e760bfd42..8f6e47520b91 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/filtered/FilteredDeckOptionsViewModelTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/filtered/FilteredDeckOptionsViewModelTest.kt @@ -25,6 +25,7 @@ import anki.decks.filteredDeckForUpdate import com.ichi2.anki.CollectionManager.withCol import com.ichi2.anki.Flag import com.ichi2.anki.RobolectricTest +import com.ichi2.anki.exception.InvalidSearchException import com.ichi2.anki.flagCardForNote import com.ichi2.anki.libanki.DeckId import com.ichi2.anki.libanki.Note @@ -203,6 +204,21 @@ class FilteredDeckOptionsViewModelTest : RobolectricTest() { } } + @Test + fun `invalid search in browser produces state with error`() = + runTest { + withViewModel { + onSearchChange(FilterIndex.First, "\"deck:A is:new") + onSearchInBrowser(FilterIndex.First) + val currentState = state.value + assertInstanceOf(currentState) + assertNotNull(currentState.throwable) + assertInstanceOf(currentState.throwable) + assertNull(currentState.browserQuery) + clearError() + } + } + @Test fun `invalid limit inputs produce expected state`() = runTest {