diff --git a/runtime/builder/builder.go b/runtime/builder/builder.go index 6a7f3ad2..5eb72995 100644 --- a/runtime/builder/builder.go +++ b/runtime/builder/builder.go @@ -32,10 +32,10 @@ type Field struct { // The Name of the field. Name string - // List saves whether the fields is a list of items + // List saves whether the fields are a list of items List bool - // WrapList saves whether the a list field should be wrapped in an object + // WrapList saves whether the field should be wrapped in an individual object WrapList bool // Value contains the field value. if nil, fields will contain a subselection. diff --git a/test/features/enums/enums_test.go b/test/features/enums/enums_test.go index 037da8ae..9097c03c 100644 --- a/test/features/enums/enums_test.go +++ b/test/features/enums/enums_test.go @@ -4,9 +4,8 @@ import ( "context" "testing" - "github.com/stretchr/testify/assert" - "github.com/steebchen/prisma-client-go/test" + "github.com/steebchen/prisma-client-go/test/helpers/massert" ) type cx = context.Context @@ -51,9 +50,9 @@ func TestEnums(t *testing.T) { t.Fatalf("fail %s", err) } - assert.Equal(t, expected, created) + massert.Equal(t, expected, created) - actual, err := client.User.FindMany( + actual, err := client.User.FindFirst( User.Role.Equals(RoleAdmin), User.Role.In([]Role{RoleAdmin}), User.RoleOpt.Equals(RoleModerator), @@ -63,7 +62,119 @@ func TestEnums(t *testing.T) { t.Fatalf("fail %s", err) } - assert.Equal(t, []UserModel{*expected}, actual) + massert.Equal(t, expected, actual) + }, + }, { + name: "many or with and wrapper", + run: func(t *testing.T, client *PrismaClient, ctx cx) { + _, err := client.User.CreateOne( + User.Role.Set(RoleAdmin), + User.ID.Set("123"), + ).Exec(ctx) + if err != nil { + t.Fatalf("fail %s", err) + } + + _, err = client.User.CreateOne( + User.Role.Set(RoleModerator), + User.ID.Set("456"), + ).Exec(ctx) + if err != nil { + t.Fatalf("fail %s", err) + } + + _, err = client.User.CreateOne( + User.Role.Set(RoleUser), + User.ID.Set("789"), + ).Exec(ctx) + if err != nil { + t.Fatalf("fail %s", err) + } + + actual, err := client.User.FindMany( + User.Or( + User.And( + User.Role.Equals(RoleUser), + ), + User.And( + User.Role.Equals(RoleAdmin), + ), + ), + ).OrderBy( + User.ID.Order(SortOrderAsc), + ).Exec(ctx) + if err != nil { + t.Fatalf("fail %s", err) + } + + massert.Equal(t, []UserModel{ + { + InnerUser: InnerUser{ + ID: "123", + Role: RoleAdmin, + }, + }, + { + InnerUser: InnerUser{ + ID: "789", + Role: RoleUser, + }, + }, + }, actual) + }, + }, { + name: "many or direct", + run: func(t *testing.T, client *PrismaClient, ctx cx) { + _, err := client.User.CreateOne( + User.Role.Set(RoleAdmin), + User.ID.Set("123"), + ).Exec(ctx) + if err != nil { + t.Fatalf("fail %s", err) + } + + _, err = client.User.CreateOne( + User.Role.Set(RoleModerator), + User.ID.Set("456"), + ).Exec(ctx) + if err != nil { + t.Fatalf("fail %s", err) + } + + _, err = client.User.CreateOne( + User.Role.Set(RoleUser), + User.ID.Set("789"), + ).Exec(ctx) + if err != nil { + t.Fatalf("fail %s", err) + } + + actual, err := client.User.FindMany( + User.Or( + User.Role.Equals(RoleUser), + User.Role.Equals(RoleAdmin), + ), + ).OrderBy( + User.ID.Order(SortOrderAsc), + ).Exec(ctx) + if err != nil { + t.Fatalf("fail %s", err) + } + + massert.Equal(t, []UserModel{ + { + InnerUser: InnerUser{ + ID: "123", + Role: RoleAdmin, + }, + }, + { + InnerUser: InnerUser{ + ID: "789", + Role: RoleUser, + }, + }, + }, actual) }, }} for _, tt := range tests {