Test HasManyRel
This commit is contained in:
parent
d8a0192f3b
commit
ffa58165fa
@ -2,17 +2,6 @@ package schema
|
|||||||
|
|
||||||
import "testing"
|
import "testing"
|
||||||
|
|
||||||
type HasMany struct {
|
|
||||||
ID int
|
|
||||||
MyStructID uint
|
|
||||||
Name string
|
|
||||||
}
|
|
||||||
|
|
||||||
type Many2Many struct {
|
|
||||||
ID int
|
|
||||||
Name string
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestBelongsToRel(t *testing.T) {
|
func TestBelongsToRel(t *testing.T) {
|
||||||
type BelongsTo struct {
|
type BelongsTo struct {
|
||||||
ID int
|
ID int
|
||||||
@ -233,20 +222,128 @@ func TestPolymorphicHasOneRel(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestHasManyRel(t *testing.T) {
|
func TestHasManyRel(t *testing.T) {
|
||||||
|
type HasMany struct {
|
||||||
|
ID int
|
||||||
|
MyStructID uint
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
type MyStruct struct {
|
type MyStruct struct {
|
||||||
ID int
|
ID int
|
||||||
Name string
|
Name string
|
||||||
HasMany []HasMany
|
HasMany []HasMany
|
||||||
}
|
}
|
||||||
|
|
||||||
Parse(&MyStruct{})
|
schema := Parse(&MyStruct{})
|
||||||
|
compareFields(schema.Fields, []*Field{
|
||||||
|
{DBName: "id", Name: "ID", BindNames: []string{"ID"}, IsNormal: true, IsPrimaryKey: true},
|
||||||
|
{DBName: "name", Name: "Name", BindNames: []string{"Name"}, IsNormal: true},
|
||||||
|
{DBName: "has_many", Name: "HasMany", BindNames: []string{"HasMany"}, Relationship: &Relationship{Kind: "has_many", ForeignKey: []string{"my_struct_id"}, AssociationForeignKey: []string{"id"}}},
|
||||||
|
}, t)
|
||||||
|
|
||||||
|
type HasMany2 struct {
|
||||||
|
ID int
|
||||||
|
MyStructKey uint
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
|
type MyStruct2 struct {
|
||||||
|
ID int `gorm:"column:my_id"`
|
||||||
|
Name string
|
||||||
|
HasMany []HasMany2 `gorm:"foreignkey:MyStructKey"`
|
||||||
|
}
|
||||||
|
|
||||||
|
schema2 := Parse(&MyStruct2{})
|
||||||
|
compareFields(schema2.Fields, []*Field{
|
||||||
|
{DBName: "my_id", Name: "ID", BindNames: []string{"ID"}, IsNormal: true, IsPrimaryKey: true, TagSettings: map[string]string{"COLUMN": "my_id"}},
|
||||||
|
{DBName: "name", Name: "Name", BindNames: []string{"Name"}, IsNormal: true},
|
||||||
|
{DBName: "has_many", Name: "HasMany", BindNames: []string{"HasMany"}, Relationship: &Relationship{Kind: "has_many", ForeignKey: []string{"my_struct_key"}, AssociationForeignKey: []string{"my_id"}}, TagSettings: map[string]string{"FOREIGNKEY": "MyStructKey"}},
|
||||||
|
}, t)
|
||||||
|
|
||||||
|
type HasMany3 struct {
|
||||||
|
ID int `gorm:"column:my_id"`
|
||||||
|
MyStructKey uint
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
|
type MyStruct3 struct {
|
||||||
|
ID int
|
||||||
|
Name string
|
||||||
|
HasMany []HasMany2 `gorm:"foreignkey:MyStructKey"`
|
||||||
|
}
|
||||||
|
|
||||||
|
schema3 := Parse(&MyStruct3{})
|
||||||
|
compareFields(schema3.Fields, []*Field{
|
||||||
|
{DBName: "id", Name: "ID", BindNames: []string{"ID"}, IsNormal: true, IsPrimaryKey: true},
|
||||||
|
{DBName: "name", Name: "Name", BindNames: []string{"Name"}, IsNormal: true},
|
||||||
|
{DBName: "has_many", Name: "HasMany", BindNames: []string{"HasMany"}, Relationship: &Relationship{Kind: "has_many", ForeignKey: []string{"my_struct_key"}, AssociationForeignKey: []string{"id"}}, TagSettings: map[string]string{"FOREIGNKEY": "MyStructKey"}},
|
||||||
|
}, t)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPolymorphicHasManyRel(t *testing.T) {
|
||||||
|
type HasMany struct {
|
||||||
|
ID int
|
||||||
|
Name string
|
||||||
|
OwnerType string
|
||||||
|
OwnerID string
|
||||||
|
}
|
||||||
|
|
||||||
|
type MyStruct struct {
|
||||||
|
ID int `gorm:"column:my_id"`
|
||||||
|
Name string
|
||||||
|
HasMany []HasMany `gorm:"polymorphic:Owner"`
|
||||||
|
}
|
||||||
|
|
||||||
|
schema := Parse(&MyStruct{})
|
||||||
|
compareFields(schema.Fields, []*Field{
|
||||||
|
{DBName: "my_id", Name: "ID", BindNames: []string{"ID"}, IsNormal: true, IsPrimaryKey: true, TagSettings: map[string]string{"COLUMN": "my_id"}},
|
||||||
|
{DBName: "name", Name: "Name", BindNames: []string{"Name"}, IsNormal: true},
|
||||||
|
{DBName: "has_many", Name: "HasMany", BindNames: []string{"HasMany"}, Relationship: &Relationship{Kind: "has_many", PolymorphicType: "OwnerType", PolymorphicDBName: "owner_type", PolymorphicValue: "my_struct", ForeignKey: []string{"owner_id"}, AssociationForeignKey: []string{"my_id"}}, TagSettings: map[string]string{"POLYMORPHIC": "Owner"}},
|
||||||
|
}, t)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSelfReferenceHasManyRel(t *testing.T) {
|
||||||
|
type MyStruct struct {
|
||||||
|
ID int
|
||||||
|
Name string
|
||||||
|
MyStructID int
|
||||||
|
MyStruct []*MyStruct
|
||||||
|
}
|
||||||
|
|
||||||
|
schema := Parse(&MyStruct{})
|
||||||
|
compareFields(schema.Fields, []*Field{
|
||||||
|
{DBName: "id", Name: "ID", BindNames: []string{"ID"}, IsNormal: true, IsPrimaryKey: true},
|
||||||
|
{DBName: "name", Name: "Name", BindNames: []string{"Name"}, IsNormal: true},
|
||||||
|
{DBName: "my_struct_id", Name: "MyStructID", BindNames: []string{"MyStructID"}, IsNormal: true, IsForeignKey: true},
|
||||||
|
{DBName: "my_struct", Name: "MyStruct", BindNames: []string{"MyStruct"}, Relationship: &Relationship{Kind: "has_many", ForeignKey: []string{"my_struct_id"}, AssociationForeignKey: []string{"id"}}},
|
||||||
|
}, t)
|
||||||
|
|
||||||
|
type MyStruct2 struct {
|
||||||
|
ID int `gorm:"column:my_id"`
|
||||||
|
Name string
|
||||||
|
HasManyKey int
|
||||||
|
HasMany []*MyStruct2 `gorm:"foreignkey:HasManyKey"`
|
||||||
|
}
|
||||||
|
|
||||||
|
schema2 := Parse(&MyStruct2{})
|
||||||
|
compareFields(schema2.Fields, []*Field{
|
||||||
|
{DBName: "my_id", Name: "ID", BindNames: []string{"ID"}, IsNormal: true, IsPrimaryKey: true, TagSettings: map[string]string{"COLUMN": "my_id"}},
|
||||||
|
{DBName: "name", Name: "Name", BindNames: []string{"Name"}, IsNormal: true},
|
||||||
|
{DBName: "has_many_key", Name: "HasManyKey", BindNames: []string{"HasManyKey"}, IsNormal: true, IsForeignKey: true},
|
||||||
|
{DBName: "has_many", Name: "HasMany", BindNames: []string{"HasMany"}, Relationship: &Relationship{Kind: "has_many", ForeignKey: []string{"has_many_key"}, AssociationForeignKey: []string{"my_id"}}, TagSettings: map[string]string{"FOREIGNKEY": "HasManyKey"}},
|
||||||
|
}, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestManyToManyRel(t *testing.T) {
|
func TestManyToManyRel(t *testing.T) {
|
||||||
|
type Many2Many struct {
|
||||||
|
ID int
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
type MyStruct struct {
|
type MyStruct struct {
|
||||||
ID int
|
ID int
|
||||||
Name string
|
Name string
|
||||||
HasMany []HasMany
|
Many2Many []Many2Many
|
||||||
}
|
}
|
||||||
|
|
||||||
Parse(&MyStruct{})
|
Parse(&MyStruct{})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user