Adding upstream version 0.28.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
88f1d47ab6
commit
e28c88ef14
933 changed files with 194711 additions and 0 deletions
261
core/field_test.go
Normal file
261
core/field_test.go
Normal file
|
@ -0,0 +1,261 @@
|
|||
package core_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
validation "github.com/go-ozzo/ozzo-validation/v4"
|
||||
"github.com/pocketbase/pocketbase/core"
|
||||
"github.com/pocketbase/pocketbase/tests"
|
||||
)
|
||||
|
||||
func testFieldBaseMethods(t *testing.T, fieldType string) {
|
||||
factory, ok := core.Fields[fieldType]
|
||||
if !ok {
|
||||
t.Fatalf("Missing %q field factory", fieldType)
|
||||
}
|
||||
|
||||
f := factory()
|
||||
if f == nil {
|
||||
t.Fatal("Expected non-nil Field instance")
|
||||
}
|
||||
|
||||
t.Run("type", func(t *testing.T) {
|
||||
if v := f.Type(); v != fieldType {
|
||||
t.Fatalf("Expected type %q, got %q", fieldType, v)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("id", func(t *testing.T) {
|
||||
testValues := []string{"new_id", ""}
|
||||
for _, expected := range testValues {
|
||||
f.SetId(expected)
|
||||
if v := f.GetId(); v != expected {
|
||||
t.Fatalf("Expected id %q, got %q", expected, v)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("name", func(t *testing.T) {
|
||||
testValues := []string{"new_name", ""}
|
||||
for _, expected := range testValues {
|
||||
f.SetName(expected)
|
||||
if v := f.GetName(); v != expected {
|
||||
t.Fatalf("Expected name %q, got %q", expected, v)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("system", func(t *testing.T) {
|
||||
testValues := []bool{false, true}
|
||||
for _, expected := range testValues {
|
||||
f.SetSystem(expected)
|
||||
if v := f.GetSystem(); v != expected {
|
||||
t.Fatalf("Expected system %v, got %v", expected, v)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("hidden", func(t *testing.T) {
|
||||
testValues := []bool{false, true}
|
||||
for _, expected := range testValues {
|
||||
f.SetHidden(expected)
|
||||
if v := f.GetHidden(); v != expected {
|
||||
t.Fatalf("Expected hidden %v, got %v", expected, v)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func testDefaultFieldIdValidation(t *testing.T, fieldType string) {
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
collection := core.NewBaseCollection("test_collection")
|
||||
|
||||
scenarios := []struct {
|
||||
name string
|
||||
field func() core.Field
|
||||
expectError bool
|
||||
}{
|
||||
{
|
||||
"empty value",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
return f
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"invalid length",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetId(strings.Repeat("a", 101))
|
||||
return f
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"valid length",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetId(strings.Repeat("a", 100))
|
||||
return f
|
||||
},
|
||||
false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, s := range scenarios {
|
||||
t.Run("[id] "+s.name, func(t *testing.T) {
|
||||
errs, _ := s.field().ValidateSettings(context.Background(), app, collection).(validation.Errors)
|
||||
|
||||
hasErr := errs["id"] != nil
|
||||
if hasErr != s.expectError {
|
||||
t.Fatalf("Expected hasErr %v, got %v", s.expectError, hasErr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func testDefaultFieldNameValidation(t *testing.T, fieldType string) {
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
collection := core.NewBaseCollection("test_collection")
|
||||
|
||||
scenarios := []struct {
|
||||
name string
|
||||
field func() core.Field
|
||||
expectError bool
|
||||
}{
|
||||
{
|
||||
"empty value",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
return f
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"invalid length",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetName(strings.Repeat("a", 101))
|
||||
return f
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"valid length",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetName(strings.Repeat("a", 100))
|
||||
return f
|
||||
},
|
||||
false,
|
||||
},
|
||||
{
|
||||
"invalid regex",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetName("test(")
|
||||
return f
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"valid regex",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetName("test_123")
|
||||
return f
|
||||
},
|
||||
false,
|
||||
},
|
||||
{
|
||||
"_via_",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetName("a_via_b")
|
||||
return f
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"system reserved - null",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetName("null")
|
||||
return f
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"system reserved - false",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetName("false")
|
||||
return f
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"system reserved - true",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetName("true")
|
||||
return f
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"system reserved - _rowid_",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetName("_rowid_")
|
||||
return f
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"system reserved - expand",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetName("expand")
|
||||
return f
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"system reserved - collectionId",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetName("collectionId")
|
||||
return f
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"system reserved - collectionName",
|
||||
func() core.Field {
|
||||
f := core.Fields[fieldType]()
|
||||
f.SetName("collectionName")
|
||||
return f
|
||||
},
|
||||
true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, s := range scenarios {
|
||||
t.Run("[name] "+s.name, func(t *testing.T) {
|
||||
errs, _ := s.field().ValidateSettings(context.Background(), app, collection).(validation.Errors)
|
||||
|
||||
hasErr := errs["name"] != nil
|
||||
if hasErr != s.expectError {
|
||||
t.Fatalf("Expected hasErr %v, got %v", s.expectError, hasErr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue