mirror of
https://github.com/ent/ent.git
synced 2026-05-22 09:31:45 +03:00
Summary: Go plugin is not a good solution for both internal and external usage. It's hard to manage and maintain matching versions (both Go and external libraries), and it does not support Windows. Reviewed By: alexsn Differential Revision: D16582217 fbshipit-source-id: 81876d2c6f30bbfc16ecf9e5000f0670f2e62484
86 lines
2.0 KiB
Go
86 lines
2.0 KiB
Go
package load
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"fbc/ent"
|
|
"fbc/ent/edge"
|
|
"fbc/ent/field"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
type User struct {
|
|
ent.Schema
|
|
}
|
|
|
|
func (User) Fields() []ent.Field {
|
|
return []ent.Field{
|
|
field.Int("age"),
|
|
field.String("name"),
|
|
field.String("nullable").
|
|
Nullable(),
|
|
field.String("optional").
|
|
Optional(),
|
|
}
|
|
}
|
|
|
|
func (User) Edges() []ent.Edge {
|
|
return []ent.Edge{
|
|
edge.To("groups", Group.Type),
|
|
edge.To("parent", User.Type).
|
|
Unique().
|
|
From("children"),
|
|
}
|
|
}
|
|
|
|
type Group struct {
|
|
ent.Schema
|
|
}
|
|
|
|
func (Group) Fields() []ent.Field { return nil }
|
|
|
|
func (Group) Edges() []ent.Edge {
|
|
return []ent.Edge{
|
|
edge.From("users", User.Type),
|
|
}
|
|
}
|
|
|
|
func TestMarshalSchema(t *testing.T) {
|
|
for _, u := range []ent.Schema{User{}, &User{}} {
|
|
buf, err := MarshalSchema(u)
|
|
require.NoError(t, err)
|
|
|
|
schema := &Schema{}
|
|
require.NoError(t, json.Unmarshal(buf, schema))
|
|
require.Equal(t, "User", schema.Name)
|
|
require.Len(t, schema.Fields, 4)
|
|
require.Equal(t, "age", schema.Fields[0].Name)
|
|
require.Equal(t, field.TypeInt, schema.Fields[0].Type)
|
|
|
|
require.Equal(t, "name", schema.Fields[1].Name)
|
|
require.Equal(t, field.TypeString, schema.Fields[1].Type)
|
|
|
|
require.Equal(t, "nullable", schema.Fields[2].Name)
|
|
require.Equal(t, field.TypeString, schema.Fields[2].Type)
|
|
require.True(t, schema.Fields[2].Nullable)
|
|
require.False(t, schema.Fields[2].Optional)
|
|
|
|
require.Equal(t, "optional", schema.Fields[3].Name)
|
|
require.Equal(t, field.TypeString, schema.Fields[3].Type)
|
|
require.False(t, schema.Fields[3].Nullable)
|
|
require.True(t, schema.Fields[3].Optional)
|
|
|
|
require.Len(t, schema.Edges, 2)
|
|
require.Equal(t, "groups", schema.Edges[0].Name)
|
|
require.Equal(t, "Group", schema.Edges[0].Type)
|
|
require.False(t, schema.Edges[0].Inverse)
|
|
require.Equal(t, "children", schema.Edges[1].Name)
|
|
require.Equal(t, "User", schema.Edges[1].Type)
|
|
require.True(t, schema.Edges[1].Inverse)
|
|
require.Equal(t, "parent", schema.Edges[1].Ref.Name)
|
|
require.True(t, schema.Edges[1].Ref.Unique)
|
|
}
|
|
}
|