[fenix] For https://github.com/mozilla-mobile/fenix/issues/23813 - Clear error message for nameOnCardLayout when valid name is submitted

pull/600/head
tristan-jea 3 years ago committed by mergify[bot]
parent e8a52a9b21
commit 34afc2a3f8

@ -132,7 +132,7 @@ class CreditCardEditorView(
} }
if (binding.nameOnCardInput.text.toString().isNotBlank()) { if (binding.nameOnCardInput.text.toString().isNotBlank()) {
binding.nameOnCardInput.error = null binding.nameOnCardLayout.error = null
binding.nameOnCardTitle.setTextColor(binding.root.context.getColorFromAttr(R.attr.textPrimary)) binding.nameOnCardTitle.setTextColor(binding.root.context.getColorFromAttr(R.attr.textPrimary))
} else { } else {
isValid = false isValid = false

@ -24,6 +24,7 @@ import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue
import org.junit.Assert.assertNotNull import org.junit.Assert.assertNotNull
import org.junit.Assert.assertNull
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
@ -209,6 +210,40 @@ class CreditCardEditorViewTest {
} }
} }
@Test
fun `GIVEN invalid credit card values WHEN valid values are entered and the save button is clicked THEN error messages are cleared`() {
creditCardEditorView.bind(getInitialCreditCardEditorState())
var billingName = ""
var cardNumber = "1234567891234567"
val expiryMonth = 5
fragmentCreditCardEditorBinding.cardNumberInput.text = cardNumber.toEditable()
fragmentCreditCardEditorBinding.nameOnCardInput.text = billingName.toEditable()
fragmentCreditCardEditorBinding.expiryMonthDropDown.setSelection(expiryMonth - 1)
fragmentCreditCardEditorBinding.saveButton.performClick()
verify {
creditCardEditorView.validateForm()
}
billingName = "Banana Apple"
cardNumber = "2720994326581252"
fragmentCreditCardEditorBinding.nameOnCardInput.text = billingName.toEditable()
fragmentCreditCardEditorBinding.cardNumberInput.text = cardNumber.toEditable()
fragmentCreditCardEditorBinding.saveButton.performClick()
verify {
creditCardEditorView.validateForm()
}
assertTrue(creditCardEditorView.validateForm())
assertNull(fragmentCreditCardEditorBinding.cardNumberLayout.error)
assertNull(fragmentCreditCardEditorBinding.nameOnCardLayout.error)
}
@Test @Test
fun `GIVEN invalid name on card WHEN the save button is clicked THEN interactor is not called`() { fun `GIVEN invalid name on card WHEN the save button is clicked THEN interactor is not called`() {
creditCardEditorView.bind(getInitialCreditCardEditorState()) creditCardEditorView.bind(getInitialCreditCardEditorState())

Loading…
Cancel
Save