Skip to content

Commit

Permalink
Merge pull request #1632 from Jacalz/setvalidationerror-quickfix
Browse files Browse the repository at this point in the history
Refresh entry on SetValidationError()
  • Loading branch information
Jacalz committed Dec 5, 2020
2 parents a2af54f + e61cf15 commit e68fdfc
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 21 deletions.
20 changes: 0 additions & 20 deletions widget/entry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (

"fyne.io/fyne"
"fyne.io/fyne/canvas"
"fyne.io/fyne/data/validation"
"fyne.io/fyne/driver/desktop"
"fyne.io/fyne/test"
"fyne.io/fyne/theme"
Expand Down Expand Up @@ -1383,25 +1382,6 @@ func TestEntry_TextWrap(t *testing.T) {
}
}

func TestEntry_ValidatedEntry(t *testing.T) {
entry, window := setupImageTest(false)
defer teardownImageTest(window)
c := window.Canvas()

r := validation.NewRegexp(`^\d{4}-\d{2}-\d{2}`, "Input is not a valid date")
entry.Validator = r
test.AssertImageMatches(t, "entry/validate_initial.png", c.Capture())

test.Type(entry, "2020-02")
assert.Error(t, r(entry.Text))
entry.FocusLost()
test.AssertImageMatches(t, "entry/validate_invalid.png", c.Capture())

test.Type(entry, "-12")
assert.NoError(t, r(entry.Text))
test.AssertImageMatches(t, "entry/validate_valid.png", c.Capture())
}

func TestMultiLineEntry_MinSize(t *testing.T) {
entry := widget.NewEntry()
singleMin := entry.MinSize()
Expand Down
2 changes: 1 addition & 1 deletion widget/entry_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func (e *Entry) SetValidationError(err error) {
}

e.validationError = err
e.validationStatus.Refresh()
e.Refresh()
}

var _ fyne.Widget = (*validationStatus)(nil)
Expand Down
83 changes: 83 additions & 0 deletions widget/entry_validation_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package widget_test

import (
"errors"
"testing"

"fyne.io/fyne/data/validation"
"fyne.io/fyne/test"
"fyne.io/fyne/widget"

"github.com/stretchr/testify/assert"
)

var validator = validation.NewRegexp(`^\d{4}-\d{2}-\d{2}$`, "Input is not a valid date")

func TestEntry_Validated(t *testing.T) {
entry, window := setupImageTest(false)
defer teardownImageTest(window)
c := window.Canvas()

entry.Validator = validator
test.AssertImageMatches(t, "entry/validate_initial.png", c.Capture())

test.Type(entry, "2020-02")
assert.Error(t, entry.Validator(entry.Text))
entry.FocusLost()
test.AssertImageMatches(t, "entry/validate_invalid.png", c.Capture())

test.Type(entry, "-12")
assert.NoError(t, entry.Validator(entry.Text))
test.AssertImageMatches(t, "entry/validate_valid.png", c.Capture())
}

func TestEntry_Validate(t *testing.T) {
entry := widget.NewEntry()
entry.Validator = validator

test.Type(entry, "2020-02")
assert.Error(t, entry.Validate())
assert.Equal(t, entry.Validate(), entry.Validator(entry.Text))

test.Type(entry, "-12")
assert.NoError(t, entry.Validate())
assert.Equal(t, entry.Validate(), entry.Validator(entry.Text))

entry.SetText("incorrect")
assert.Error(t, entry.Validate())
assert.Equal(t, entry.Validate(), entry.Validator(entry.Text))
}

func TestEntry_SetValidationError(t *testing.T) {
entry, window := setupImageTest(false)
defer teardownImageTest(window)
c := window.Canvas()

entry.Validator = validator

entry.SetText("2020-30-30")
entry.SetValidationError(errors.New("set invalid"))
test.AssertImageMatches(t, "entry/validation_set_invalid.png", c.Capture())

entry.SetText("set valid")
entry.SetValidationError(nil)
test.AssertImageMatches(t, "entry/validation_set_valid.png", c.Capture())
}

func TestEntry_SetOnValidationChanged(t *testing.T) {
entry := widget.NewEntry()
entry.Validator = validator

modified := false
entry.SetOnValidationChanged(func(err error) {
assert.Equal(t, err, entry.Validator(entry.Text))
modified = true
})

entry.SetText("2020")
assert.True(t, modified)

modified = false
test.Type(entry, "-01-01")
assert.True(t, modified)
}
Binary file added widget/testdata/entry/validation_set_invalid.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added widget/testdata/entry/validation_set_valid.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit e68fdfc

Please sign in to comment.