diff --git a/Makefile b/Makefile index d4bf10a..b9af577 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,9 @@ run: fmt: gofmt -w ./ +make doc: + godoc -http=:6060 + test: go clean -testcache go test ./... -cover -coverprofile=coverage.out diff --git a/README.md b/README.md index 2d9b5fd..b968026 100644 --- a/README.md +++ b/README.md @@ -23,3 +23,19 @@

+ +# Install + +```bash +go get github.com/aacebo/owl +``` + +# Usage + +```go +schema := owl.String().Required() + +if err := schema.Validate("..."); err != nil { // nil + panic(err) +} +``` diff --git a/any_test.go b/any_test.go index f989865..d7759f6 100644 --- a/any_test.go +++ b/any_test.go @@ -43,3 +43,19 @@ func Test_Any(t *testing.T) { }) }) } + +func ExampleAny() { + schema := owl.Any() + + if err := schema.Validate("..."); err != nil { // nil + panic(err) + } + + if err := schema.Validate(1); err != nil { // nil + panic(err) + } + + if err := schema.Validate(true); err != nil { // nil + panic(err) + } +} diff --git a/bool_test.go b/bool_test.go index 9c388b6..9df4ff9 100644 --- a/bool_test.go +++ b/bool_test.go @@ -43,3 +43,19 @@ func Test_Bool(t *testing.T) { }) }) } + +func ExampleBool() { + schema := owl.Bool() + + if err := schema.Validate(true); err != nil { // nil + panic(err) + } + + if err := schema.Validate(false); err != nil { // nil + panic(err) + } + + if err := schema.Validate("test"); err != nil { // error + panic(err) + } +} diff --git a/float_test.go b/float_test.go index 19368be..a566b37 100644 --- a/float_test.go +++ b/float_test.go @@ -79,3 +79,43 @@ func Test_Float(t *testing.T) { }) }) } + +func ExampleFloat() { + schema := owl.Float() + + if err := schema.Validate(1.0); err != nil { // nil + panic(err) + } + + if err := schema.Validate(1); err != nil { // nil + panic(err) + } + + if err := schema.Validate("test"); err != nil { // error + panic(err) + } +} + +func ExampleFloatSchema_Min() { + schema := owl.Float().Min(5.0) + + if err := schema.Validate(5); err != nil { // nil + panic(err) + } + + if err := schema.Validate(4.5); err != nil { // error + panic(err) + } +} + +func ExampleFloatSchema_Max() { + schema := owl.Float().Max(5.0) + + if err := schema.Validate(5); err != nil { // nil + panic(err) + } + + if err := schema.Validate(5.5); err != nil { // error + panic(err) + } +} diff --git a/int_test.go b/int_test.go index 06daa79..12d200b 100644 --- a/int_test.go +++ b/int_test.go @@ -79,3 +79,43 @@ func Test_Int(t *testing.T) { }) }) } + +func ExampleInt() { + schema := owl.Int() + + if err := schema.Validate(1); err != nil { // nil + panic(err) + } + + if err := schema.Validate(1); err != nil { // nil + panic(err) + } + + if err := schema.Validate("test"); err != nil { // error + panic(err) + } +} + +func ExampleIntSchema_Min() { + schema := owl.Int().Min(5) + + if err := schema.Validate(5); err != nil { // nil + panic(err) + } + + if err := schema.Validate(4); err != nil { // error + panic(err) + } +} + +func ExampleIntSchema_Max() { + schema := owl.Int().Max(5) + + if err := schema.Validate(5); err != nil { // nil + panic(err) + } + + if err := schema.Validate(6); err != nil { // error + panic(err) + } +} diff --git a/object_test.go b/object_test.go index 03e6c10..7513bde 100644 --- a/object_test.go +++ b/object_test.go @@ -111,3 +111,24 @@ func Test_Object(t *testing.T) { }) }) } + +func ExampleObject() { + schema := owl.Object().Field( + "email", owl.String().Email().Required(), + ).Field( + "password", owl.String().Min(5).Max(20).Required(), + ) + + if err := schema.Validate(map[string]any{ + "email": "test@test.com", + "password": "mytestpassword", + }); err != nil { // nil + panic(err) + } + + if err := schema.Validate(map[string]any{ + "email": "test@test.com", + }); err != nil { // error + panic(err) + } +} diff --git a/string_test.go b/string_test.go index b2479bc..6a2edca 100644 --- a/string_test.go +++ b/string_test.go @@ -152,3 +152,87 @@ func Test_String(t *testing.T) { }) }) } + +func ExampleString() { + schema := owl.String() + + if err := schema.Validate("test"); err != nil { // nil + panic(err) + } + + if err := schema.Validate(true); err != nil { // error + panic(err) + } +} + +func ExampleStringSchema_Min() { + schema := owl.String().Min(5) + + if err := schema.Validate("tester"); err != nil { // nil + panic(err) + } + + if err := schema.Validate("test"); err != nil { // error + panic(err) + } +} + +func ExampleStringSchema_Max() { + schema := owl.String().Max(5) + + if err := schema.Validate("test"); err != nil { // nil + panic(err) + } + + if err := schema.Validate("tester"); err != nil { // error + panic(err) + } +} + +func ExampleStringSchema_Regex() { + schema := owl.String().Regex(regexp.MustCompile("^[0-9a-zA-Z_-]+$")) + + if err := schema.Validate("test"); err != nil { // nil + panic(err) + } + + if err := schema.Validate("hello world"); err != nil { // error + panic(err) + } +} + +func ExampleStringSchema_Email() { + schema := owl.String().Email() + + if err := schema.Validate("test@gmail.com"); err != nil { // nil + panic(err) + } + + if err := schema.Validate("test"); err != nil { // error + panic(err) + } +} + +func ExampleStringSchema_UUID() { + schema := owl.String().UUID() + + if err := schema.Validate("afefc1ab-b8f2-4803-8e9a-60515854141a"); err != nil { // nil + panic(err) + } + + if err := schema.Validate("test"); err != nil { // error + panic(err) + } +} + +func ExampleStringSchema_URL() { + schema := owl.String().URL() + + if err := schema.Validate("https://www.google.com"); err != nil { // nil + panic(err) + } + + if err := schema.Validate("test"); err != nil { // error + panic(err) + } +} diff --git a/time_test.go b/time_test.go index bc7c660..69512a9 100644 --- a/time_test.go +++ b/time_test.go @@ -62,3 +62,35 @@ func Test_Time(t *testing.T) { }) }) } + +func ExampleTime() { + schema := owl.Time() + + if err := schema.Validate(time.Now()); err != nil { // nil + panic(err) + } + + if err := schema.Validate(time.Now().Format(time.RFC3339)); err != nil { // nil + panic(err) + } + + if err := schema.Validate("test"); err != nil { // error + panic(err) + } +} + +func ExampleTimeSchema_Min() { + schema := owl.Time().Min(time.Now()) + + if err := schema.Validate(time.Now().AddDate(-1, 0, 0)); err != nil { // error + panic(err) + } +} + +func ExampleTimeSchema_Max() { + schema := owl.Time().Max(time.Now()) + + if err := schema.Validate(time.Now().AddDate(1, 0, 0)); err != nil { // error + panic(err) + } +} diff --git a/union_test.go b/union_test.go index 635b9c4..4cabf34 100644 --- a/union_test.go +++ b/union_test.go @@ -31,3 +31,22 @@ func Test_Union(t *testing.T) { }) }) } + +func ExampleUnion() { + schema := owl.Union( + owl.String().Required(), + owl.Int().Required(), + ) + + if err := schema.Validate("test"); err != nil { // nil + panic(err) + } + + if err := schema.Validate(1); err != nil { // nil + panic(err) + } + + if err := schema.Validate(true); err != nil { // error + panic(err) + } +}