Skip to content

Commit

Permalink
unmarshalling empty value fix (#34)
Browse files Browse the repository at this point in the history
* data source links applied, type renaming

* phone parser

* unmarshalling empty value fix

---------

Co-authored-by: ivan-lemiashonak <[email protected]>
  • Loading branch information
ilemiashonak and ilemiashonak authored May 30, 2023
1 parent 067c1d3 commit b53c3cb
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 39 deletions.
6 changes: 4 additions & 2 deletions email/email.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,10 @@ func (email *Email) UnmarshalJSON(data []byte) error {
}

emailValue := Email(str)
if err := emailValue.Validate(); err != nil {
return err
if len(emailValue) != 0 {
if err := emailValue.Validate(); err != nil {
return err
}
}

*email = emailValue
Expand Down
75 changes: 38 additions & 37 deletions email/email_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,45 +7,46 @@ import (
)

var testCases = []struct {
emailUnderTest Email
expectingValidateError bool
expectingValueError bool
emailUnderTest Email
expectingValidateError bool
expectingValueError bool
expectingUnmarshalError bool
}{
{emailUnderTest: "", expectingValidateError: true, expectingValueError: false},
{emailUnderTest: "@", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: " @", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: " @ ", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "@ ", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "@.", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "..@.", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: ".@..", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "@@..", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: ".@.", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: ".@", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "email@", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "email@x", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "email@@example.com", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "[email protected]", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "email.com", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "email.", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: ".com", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "com", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "[email protected]", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "[email protected]", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "[email protected]", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "email@[email protected]", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "some [email protected]", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "email@whitespace example.com", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com", expectingValidateError: true, expectingValueError: true},
{emailUnderTest: "", expectingValidateError: true, expectingValueError: false, expectingUnmarshalError: false},
{emailUnderTest: "@", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: " @", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: " @ ", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "@ ", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "@.", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "..@.", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: ".@..", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "@@..", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: ".@.", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: ".@", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "email@", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "email@x", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "email@@example.com", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "[email protected]", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "email.com", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "email.", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: ".com", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "com", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "[email protected]", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "[email protected]", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "[email protected]", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "email@[email protected]", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "some [email protected]", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "email@whitespace example.com", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com", expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},
{emailUnderTest: "email@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com",
expectingValidateError: true, expectingValueError: true},
expectingValidateError: true, expectingValueError: true, expectingUnmarshalError: true},

{emailUnderTest: "[email protected]", expectingValidateError: false, expectingValueError: false},
{emailUnderTest: "[email protected]", expectingValidateError: false, expectingValueError: false},
{emailUnderTest: "[email protected]", expectingValidateError: false, expectingValueError: false},
{emailUnderTest: "[email protected]", expectingValidateError: false, expectingValueError: false},
{emailUnderTest: "[email protected]", expectingValidateError: false, expectingValueError: false},
{emailUnderTest: "[email protected]", expectingValidateError: false, expectingValueError: false},
{emailUnderTest: "[email protected]", expectingValidateError: false, expectingValueError: false, expectingUnmarshalError: false},
{emailUnderTest: "[email protected]", expectingValidateError: false, expectingValueError: false, expectingUnmarshalError: false},
{emailUnderTest: "[email protected]", expectingValidateError: false, expectingValueError: false, expectingUnmarshalError: false},
{emailUnderTest: "[email protected]", expectingValidateError: false, expectingValueError: false, expectingUnmarshalError: false},
{emailUnderTest: "[email protected]", expectingValidateError: false, expectingValueError: false, expectingUnmarshalError: false},
{emailUnderTest: "[email protected]", expectingValidateError: false, expectingValueError: false, expectingUnmarshalError: false},
}

func TestEmailValidate(t *testing.T) {
Expand All @@ -65,7 +66,7 @@ func TestEmailJsonUnmarshal(t *testing.T) {
}

actualErr := json.Unmarshal([]byte(jsonStr), &emailStruct)
if (actualErr == nil) == testCase.expectingValidateError {
if (actualErr == nil) == testCase.expectingUnmarshalError {
t.Errorf(`JsonUnmarshal: '%s'. expecting error - '%v' but was opposite`, testCase.emailUnderTest, testCase.expectingValidateError)
}
}
Expand Down

0 comments on commit b53c3cb

Please sign in to comment.