From 3dee292cae7f9147d79fefd72b772fc8b120fd35 Mon Sep 17 00:00:00 2001 From: Grzegorz Orczykowski Date: Wed, 17 Jul 2024 23:44:45 +0200 Subject: [PATCH 1/3] Fixed applying the masked appearance --- .../java/org/odk/collect/android/views/WidgetAnswerText.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/collect_app/src/main/java/org/odk/collect/android/views/WidgetAnswerText.kt b/collect_app/src/main/java/org/odk/collect/android/views/WidgetAnswerText.kt index 0412b9452ca..e43a8bc9c04 100644 --- a/collect_app/src/main/java/org/odk/collect/android/views/WidgetAnswerText.kt +++ b/collect_app/src/main/java/org/odk/collect/android/views/WidgetAnswerText.kt @@ -59,11 +59,9 @@ class WidgetAnswerText(context: Context, attrs: AttributeSet?) : FrameLayout(con } }) if (isMasked) { - binding.editText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD + binding.editText.inputType = binding.editText.inputType or InputType.TYPE_TEXT_VARIATION_PASSWORD binding.editText.transformationMethod = PasswordTransformationMethod.getInstance() binding.textView.transformationMethod = PasswordTransformationMethod.getInstance() - } else { - binding.editText.inputType = InputType.TYPE_CLASS_TEXT } } From a9941403c22fcec2025cebb5955ba2e5a7136567 Mon Sep 17 00:00:00 2001 From: Grzegorz Orczykowski Date: Wed, 17 Jul 2024 23:45:55 +0200 Subject: [PATCH 2/3] Fixed tests --- .../collect/android/widgets/DecimalWidgetTest.java | 3 +-- .../android/widgets/ExDecimalWidgetTest.java | 3 +-- .../android/widgets/ExIntegerWidgetTest.java | 3 +-- .../collect/android/widgets/ExStringWidgetTest.java | 7 +++---- .../collect/android/widgets/IntegerWidgetTest.java | 3 +-- .../android/widgets/StringNumberWidgetTest.java | 13 +------------ .../collect/android/widgets/StringWidgetTest.java | 8 +++----- 7 files changed, 11 insertions(+), 29 deletions(-) diff --git a/collect_app/src/test/java/org/odk/collect/android/widgets/DecimalWidgetTest.java b/collect_app/src/test/java/org/odk/collect/android/widgets/DecimalWidgetTest.java index ea6bdc64f26..bbe404e7979 100644 --- a/collect_app/src/test/java/org/odk/collect/android/widgets/DecimalWidgetTest.java +++ b/collect_app/src/test/java/org/odk/collect/android/widgets/DecimalWidgetTest.java @@ -9,7 +9,6 @@ import static org.odk.collect.android.utilities.Appearances.THOUSANDS_SEP; import android.text.InputType; -import android.text.method.SingleLineTransformationMethod; import androidx.annotation.NonNull; @@ -216,6 +215,6 @@ public void separatorsShouldBeAddedWhenEnabled() { public void verifyInputType() { DecimalWidget widget = getWidget(); assertThat(widget.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL)); - assertThat(widget.widgetAnswerText.getBinding().editText.getTransformationMethod().getClass(), equalTo(SingleLineTransformationMethod.class)); + assertThat(widget.widgetAnswerText.getBinding().editText.getTransformationMethod(), equalTo(null)); } } diff --git a/collect_app/src/test/java/org/odk/collect/android/widgets/ExDecimalWidgetTest.java b/collect_app/src/test/java/org/odk/collect/android/widgets/ExDecimalWidgetTest.java index 52cb2f71780..1eb834a2c04 100644 --- a/collect_app/src/test/java/org/odk/collect/android/widgets/ExDecimalWidgetTest.java +++ b/collect_app/src/test/java/org/odk/collect/android/widgets/ExDecimalWidgetTest.java @@ -9,7 +9,6 @@ import static org.odk.collect.android.utilities.Appearances.THOUSANDS_SEP; import android.text.InputType; -import android.text.method.SingleLineTransformationMethod; import androidx.annotation.NonNull; @@ -99,7 +98,7 @@ public void separatorsShouldBeAddedWhenEnabled() { public void verifyInputType() { ExDecimalWidget widget = getWidget(); assertThat(widget.binding.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL)); - assertThat(widget.binding.widgetAnswerText.getBinding().editText.getTransformationMethod().getClass(), equalTo(SingleLineTransformationMethod.class)); + assertThat(widget.binding.widgetAnswerText.getBinding().editText.getTransformationMethod(), equalTo(null)); assertThat(widget.binding.widgetAnswerText.getBinding().textView.getTransformationMethod(), equalTo(null)); } } diff --git a/collect_app/src/test/java/org/odk/collect/android/widgets/ExIntegerWidgetTest.java b/collect_app/src/test/java/org/odk/collect/android/widgets/ExIntegerWidgetTest.java index 546bd1136b2..c5f8d46ecfe 100644 --- a/collect_app/src/test/java/org/odk/collect/android/widgets/ExIntegerWidgetTest.java +++ b/collect_app/src/test/java/org/odk/collect/android/widgets/ExIntegerWidgetTest.java @@ -7,7 +7,6 @@ import static org.odk.collect.android.utilities.Appearances.THOUSANDS_SEP; import android.text.InputType; -import android.text.method.SingleLineTransformationMethod; import androidx.annotation.NonNull; @@ -73,7 +72,7 @@ public void separatorsShouldBeAddedWhenEnabled() { public void verifyInputType() { ExIntegerWidget widget = getWidget(); assertThat(widget.binding.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED)); - assertThat(widget.binding.widgetAnswerText.getBinding().editText.getTransformationMethod().getClass(), equalTo(SingleLineTransformationMethod.class)); + assertThat(widget.binding.widgetAnswerText.getBinding().editText.getTransformationMethod(), equalTo(null)); assertThat(widget.binding.widgetAnswerText.getBinding().textView.getTransformationMethod(), equalTo(null)); } } diff --git a/collect_app/src/test/java/org/odk/collect/android/widgets/ExStringWidgetTest.java b/collect_app/src/test/java/org/odk/collect/android/widgets/ExStringWidgetTest.java index bebe2da4fde..d6c2cf68c67 100644 --- a/collect_app/src/test/java/org/odk/collect/android/widgets/ExStringWidgetTest.java +++ b/collect_app/src/test/java/org/odk/collect/android/widgets/ExStringWidgetTest.java @@ -24,7 +24,6 @@ import android.text.InputType; import android.text.method.PasswordTransformationMethod; -import android.text.method.SingleLineTransformationMethod; /** * @author James Knight @@ -58,8 +57,8 @@ public void setUp() throws Exception { @Test public void verifyInputType() { ExStringWidget widget = getWidget(); - assertThat(widget.binding.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_TEXT)); - assertThat(widget.binding.widgetAnswerText.getBinding().editText.getTransformationMethod().getClass(), equalTo(SingleLineTransformationMethod.class)); + assertThat(widget.binding.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE)); + assertThat(widget.binding.widgetAnswerText.getBinding().editText.getTransformationMethod(), equalTo(null)); assertThat(widget.binding.widgetAnswerText.getBinding().textView.getTransformationMethod(), equalTo(null)); } @@ -67,7 +66,7 @@ public void verifyInputType() { public void verifyInputTypeWithMaskedAppearance() { when(formEntryPrompt.getAppearanceHint()).thenReturn(MASKED); ExStringWidget widget = getWidget(); - assertThat(widget.binding.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD)); + assertThat(widget.binding.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_VARIATION_PASSWORD)); assertThat(widget.binding.widgetAnswerText.getBinding().editText.getTransformationMethod().getClass(), equalTo(PasswordTransformationMethod.class)); assertThat(widget.binding.widgetAnswerText.getBinding().textView.getTransformationMethod().getClass(), equalTo(PasswordTransformationMethod.class)); } diff --git a/collect_app/src/test/java/org/odk/collect/android/widgets/IntegerWidgetTest.java b/collect_app/src/test/java/org/odk/collect/android/widgets/IntegerWidgetTest.java index 37282e96c4d..da5675d1643 100644 --- a/collect_app/src/test/java/org/odk/collect/android/widgets/IntegerWidgetTest.java +++ b/collect_app/src/test/java/org/odk/collect/android/widgets/IntegerWidgetTest.java @@ -7,7 +7,6 @@ import static org.odk.collect.android.utilities.Appearances.THOUSANDS_SEP; import android.text.InputType; -import android.text.method.SingleLineTransformationMethod; import androidx.annotation.NonNull; @@ -60,6 +59,6 @@ public void separatorsShouldBeAddedWhenEnabled() { public void verifyInputType() { IntegerWidget widget = getWidget(); assertThat(widget.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED)); - assertThat(widget.widgetAnswerText.getBinding().editText.getTransformationMethod().getClass(), equalTo(SingleLineTransformationMethod.class)); + assertThat(widget.widgetAnswerText.getBinding().editText.getTransformationMethod(), equalTo(null)); } } diff --git a/collect_app/src/test/java/org/odk/collect/android/widgets/StringNumberWidgetTest.java b/collect_app/src/test/java/org/odk/collect/android/widgets/StringNumberWidgetTest.java index caf9500376d..2d6abc64c55 100644 --- a/collect_app/src/test/java/org/odk/collect/android/widgets/StringNumberWidgetTest.java +++ b/collect_app/src/test/java/org/odk/collect/android/widgets/StringNumberWidgetTest.java @@ -4,12 +4,9 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.mockito.Mockito.when; -import static org.odk.collect.android.utilities.Appearances.MASKED; import static org.odk.collect.android.utilities.Appearances.THOUSANDS_SEP; import android.text.InputType; -import android.text.method.PasswordTransformationMethod; -import android.text.method.SingleLineTransformationMethod; import androidx.annotation.NonNull; @@ -60,14 +57,6 @@ public void separatorsShouldBeAddedWhenEnabled() { public void verifyInputType() { StringNumberWidget widget = getWidget(); assertThat(widget.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_NUMBER)); - assertThat(widget.widgetAnswerText.getBinding().editText.getTransformationMethod().getClass(), equalTo(SingleLineTransformationMethod.class)); - } - - @Test - public void verifyInputTypeWithMaskedAppearance() { - when(formEntryPrompt.getAppearanceHint()).thenReturn(MASKED); - StringNumberWidget widget = getWidget(); - assertThat(widget.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_NUMBER)); - assertThat(widget.widgetAnswerText.getBinding().editText.getTransformationMethod().getClass(), equalTo(PasswordTransformationMethod.class)); + assertThat(widget.widgetAnswerText.getBinding().editText.getTransformationMethod(), equalTo(null)); } } diff --git a/collect_app/src/test/java/org/odk/collect/android/widgets/StringWidgetTest.java b/collect_app/src/test/java/org/odk/collect/android/widgets/StringWidgetTest.java index bece4ed644b..8ca197e7f00 100644 --- a/collect_app/src/test/java/org/odk/collect/android/widgets/StringWidgetTest.java +++ b/collect_app/src/test/java/org/odk/collect/android/widgets/StringWidgetTest.java @@ -10,7 +10,6 @@ import android.text.InputType; import android.text.method.PasswordTransformationMethod; -import android.text.method.SingleLineTransformationMethod; import androidx.annotation.NonNull; @@ -45,16 +44,15 @@ public StringData getNextAnswer() { @Test public void verifyInputType() { StringWidget widget = getWidget(); - assertThat(widget.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_TEXT)); - assertThat(widget.widgetAnswerText.getBinding().editText.getTransformationMethod().getClass(), equalTo(SingleLineTransformationMethod.class)); - assertThat(widget.widgetAnswerText.getBinding().textView.getTransformationMethod(), equalTo(null)); + assertThat(widget.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE)); + assertThat(widget.widgetAnswerText.getBinding().editText.getTransformationMethod(), equalTo(null)); } @Test public void verifyInputTypeWithMaskedAppearance() { when(formEntryPrompt.getAppearanceHint()).thenReturn(MASKED); StringWidget widget = getWidget(); - assertThat(widget.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD)); + assertThat(widget.widgetAnswerText.getBinding().editText.getInputType(), equalTo(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_VARIATION_PASSWORD)); assertThat(widget.widgetAnswerText.getBinding().editText.getTransformationMethod().getClass(), equalTo(PasswordTransformationMethod.class)); } From 3e86c79de3fdd656c23da5e54f2810731b201c11 Mon Sep 17 00:00:00 2001 From: Grzegorz Orczykowski Date: Thu, 18 Jul 2024 09:19:09 +0200 Subject: [PATCH 3/3] Added new tests --- .../collect/android/widgets/ExStringWidgetTest.java | 6 ++++++ .../odk/collect/android/widgets/StringWidgetTest.java | 6 ++++++ .../android/widgets/base/GeneralStringWidgetTest.java | 11 ----------- .../odk/collect/android/widgets/base/WidgetTest.java | 5 ++++- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/collect_app/src/test/java/org/odk/collect/android/widgets/ExStringWidgetTest.java b/collect_app/src/test/java/org/odk/collect/android/widgets/ExStringWidgetTest.java index d6c2cf68c67..4dab30be6b1 100644 --- a/collect_app/src/test/java/org/odk/collect/android/widgets/ExStringWidgetTest.java +++ b/collect_app/src/test/java/org/odk/collect/android/widgets/ExStringWidgetTest.java @@ -84,4 +84,10 @@ public void answersShouldBeMaskedIfMaskedAppearanceIsUsed() { assertThat(getSpyWidget().binding.widgetAnswerText.getBinding().editText.getTransformationMethod(), is(instanceOf(PasswordTransformationMethod.class))); assertThat(getSpyWidget().binding.widgetAnswerText.getBinding().textView.getTransformationMethod(), is(instanceOf(PasswordTransformationMethod.class))); } + + @Test + public void whenNumberOfRowsSpecifiedEditTextShouldHaveProperNumberOfMinLines() { + when(questionDef.getAdditionalAttribute(null, "rows")).thenReturn("5"); + assertThat(getWidget().binding.widgetAnswerText.getBinding().editText.getMinLines(), equalTo(5)); + } } diff --git a/collect_app/src/test/java/org/odk/collect/android/widgets/StringWidgetTest.java b/collect_app/src/test/java/org/odk/collect/android/widgets/StringWidgetTest.java index 8ca197e7f00..5580a45a1c0 100644 --- a/collect_app/src/test/java/org/odk/collect/android/widgets/StringWidgetTest.java +++ b/collect_app/src/test/java/org/odk/collect/android/widgets/StringWidgetTest.java @@ -69,4 +69,10 @@ public void answersShouldBeMaskedIfMaskedAppearanceIsUsed() { assertThat(getSpyWidget().widgetAnswerText.getBinding().editText.getTransformationMethod(), is(instanceOf(PasswordTransformationMethod.class))); assertThat(getSpyWidget().widgetAnswerText.getBinding().textView.getTransformationMethod(), is(instanceOf(PasswordTransformationMethod.class))); } + + @Test + public void whenNumberOfRowsSpecifiedEditTextShouldHaveProperNumberOfMinLines() { + when(questionDef.getAdditionalAttribute(null, "rows")).thenReturn("5"); + assertThat(getWidget().widgetAnswerText.getBinding().editText.getMinLines(), equalTo(5)); + } } diff --git a/collect_app/src/test/java/org/odk/collect/android/widgets/base/GeneralStringWidgetTest.java b/collect_app/src/test/java/org/odk/collect/android/widgets/base/GeneralStringWidgetTest.java index 93408999016..c1e0e2affe6 100644 --- a/collect_app/src/test/java/org/odk/collect/android/widgets/base/GeneralStringWidgetTest.java +++ b/collect_app/src/test/java/org/odk/collect/android/widgets/base/GeneralStringWidgetTest.java @@ -4,10 +4,8 @@ import android.view.View; -import org.javarosa.core.model.QuestionDef; import org.javarosa.core.model.data.IAnswerData; import org.junit.Test; -import org.mockito.Mock; import org.odk.collect.android.R; import org.odk.collect.android.support.WidgetTestActivity; import org.odk.collect.android.widgets.StringWidget; @@ -25,15 +23,6 @@ public abstract class GeneralStringWidgetTest extends QuestionWidgetTest { - @Mock - QuestionDef questionDef; - - @Override - public void setUp() throws Exception { - super.setUp(); - when(formEntryPrompt.getQuestion()).thenReturn(questionDef); - } - @Override public void callingClearShouldRemoveTheExistingAnswer() { super.callingClearShouldRemoveTheExistingAnswer(); diff --git a/collect_app/src/test/java/org/odk/collect/android/widgets/base/WidgetTest.java b/collect_app/src/test/java/org/odk/collect/android/widgets/base/WidgetTest.java index 3058d239794..728a076d4b0 100644 --- a/collect_app/src/test/java/org/odk/collect/android/widgets/base/WidgetTest.java +++ b/collect_app/src/test/java/org/odk/collect/android/widgets/base/WidgetTest.java @@ -37,6 +37,9 @@ public abstract class WidgetTest { protected final SettingsProvider settingsProvider = TestSettingsProvider.getSettingsProvider(); + @Mock + protected QuestionDef questionDef; + @Before @OverridingMethodsMustInvokeSuper public void setUp() throws Exception { @@ -48,7 +51,7 @@ public void setUp() throws Exception { when(formEntryPrompt.getIndex()).thenReturn(mock(FormIndex.class)); when(formEntryPrompt.getIndex().toString()).thenReturn("0, 0"); when(formEntryPrompt.getFormElement()).thenReturn(formElement); - when(formEntryPrompt.getQuestion()).thenReturn(mock(QuestionDef.class)); + when(formEntryPrompt.getQuestion()).thenReturn(questionDef); } @Test