Skip to content

Commit 62d9287

Browse files
committed
Make it clear that #validateAnswer checks constraints only
1 parent 9d14e78 commit 62d9287

File tree

5 files changed

+8
-27
lines changed

5 files changed

+8
-27
lines changed

collect_app/src/main/java/org/odk/collect/android/formentry/FormEntryViewModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ public void exit() {
392392
changeLocks.getFormsLock().unlock(FORM_ENTRY_TOKEN);
393393
}
394394

395-
public void validateAnswer(FormIndex index, IAnswerData answer) {
395+
public void validateAnswerConstraint(FormIndex index, IAnswerData answer) {
396396
worker.immediate(() -> {
397397
boolean isAnswerValid = formController.getFormDef().evaluateConstraint(index.getReference(), answer);
398398
if (isAnswerValid) {

collect_app/src/main/java/org/odk/collect/android/widgets/utilities/GeoPolyDialogFragment.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import org.javarosa.core.model.Constants
77
import org.javarosa.core.model.data.GeoShapeData
88
import org.javarosa.core.model.data.GeoTraceData
99
import org.javarosa.core.model.data.IAnswerData
10-
import org.javarosa.form.api.FormEntryController
1110
import org.javarosa.form.api.FormEntryPrompt
1211
import org.odk.collect.android.javarosawrapper.FailedValidationResult
1312
import org.odk.collect.android.utilities.FormEntryPromptUtils
@@ -67,10 +66,7 @@ class GeoPolyDialogFragment(viewModelFactory: ViewModelProvider.Factory) :
6766
inputPolygon,
6867
validationResult.map {
6968
val validationResult = it.value
70-
if (validationResult is FailedValidationResult &&
71-
validationResult.index == prompt.index &&
72-
validationResult.status == FormEntryController.ANSWER_CONSTRAINT_VIOLATED
73-
) {
69+
if (validationResult is FailedValidationResult && validationResult.index == prompt.index) {
7470
validationResult.customErrorMessage ?: getString(validationResult.defaultErrorMessage)
7571
} else {
7672
null

collect_app/src/main/java/org/odk/collect/android/widgets/utilities/WidgetAnswerDialogFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ abstract class WidgetAnswerDialogFragment<T : Fragment>(
7373
}
7474

7575
fun onValidate(answer: IAnswerData?) {
76-
formEntryViewModel.validateAnswer(prompt.index, answer)
76+
formEntryViewModel.validateAnswerConstraint(prompt.index, answer)
7777
}
7878

7979
fun onAnswer(answer: IAnswerData?) {

collect_app/src/test/java/org/odk/collect/android/formentry/FormEntryViewModelTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ public void answerQuestion_savesAnswerToFormController() {
457457
}
458458

459459
@Test
460-
public void validateAnswer_updatesValidationResult() {
460+
public void validateAnswerConstraint_updatesValidationResult() {
461461
FormDef formDef = mock();
462462
when(formDef.evaluateConstraint(any(), any())).thenReturn(false);
463463
formController.setFormDef(formDef);
@@ -471,7 +471,7 @@ public void validateAnswer_updatesValidationResult() {
471471
FailedValidationResult failedValidationResult = new FailedValidationResult(formIndex, 0, null, org.odk.collect.strings.R.string.invalid_answer_error);
472472
formController.setFailedConstraint(failedValidationResult);
473473

474-
viewModel.validateAnswer(formIndex, new StringData("answer"));
474+
viewModel.validateAnswerConstraint(formIndex, new StringData("answer"));
475475
scheduler.flush(true);
476476
assertThat(viewModel.getValidationResult().getValue().getValue(), equalTo(failedValidationResult));
477477
}

collect_app/src/test/java/org/odk/collect/android/widgets/utilities/GeoPolyDialogFragmentTest.kt

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ class GeoPolyDialogFragmentTest {
333333
)
334334
}
335335

336-
verify(formEntryViewModel).validateAnswer(prompt.index, geoTraceOf(answer))
336+
verify(formEntryViewModel).validateAnswerConstraint(prompt.index, geoTraceOf(answer))
337337
}
338338

339339
@Test
@@ -354,7 +354,7 @@ class GeoPolyDialogFragmentTest {
354354
)
355355
}
356356

357-
verify(formEntryViewModel).validateAnswer(prompt.index, geoShapeOf(answer))
357+
verify(formEntryViewModel).validateAnswerConstraint(prompt.index, geoShapeOf(answer))
358358
}
359359

360360
@Test
@@ -390,7 +390,7 @@ class GeoPolyDialogFragmentTest {
390390
)
391391
}
392392

393-
verify(formEntryViewModel, never()).validateAnswer(prompt.index, geoTraceOf(answer))
393+
verify(formEntryViewModel, never()).validateAnswerConstraint(prompt.index, geoTraceOf(answer))
394394
}
395395

396396
@Test
@@ -484,21 +484,6 @@ class GeoPolyDialogFragmentTest {
484484
}
485485
}
486486

487-
@Test
488-
fun `ignores the validation message if it was triggered by a required but empty answer`() {
489-
prompt = MockFormEntryPromptBuilder(prompt)
490-
.withDataType(Constants.DATATYPE_GEOTRACE)
491-
.build()
492-
493-
validationResult.value = Consumable(FailedValidationResult(prompt.index, FormEntryController.ANSWER_REQUIRED_BUT_EMPTY, "blah", 0))
494-
launcherRule.launchAndAssertOnChild<GeoPolyFragment>(
495-
GeoPolyDialogFragment::class,
496-
bundleOf(ARG_FORM_INDEX to prompt.index)
497-
) {
498-
assertThat(it.invalidMessage.getOrAwaitValue(), equalTo(null))
499-
}
500-
}
501-
502487
@Test
503488
fun `uses validation result message for invalidMessage`() {
504489
prompt = MockFormEntryPromptBuilder(prompt)

0 commit comments

Comments
 (0)