package dbHandler import ( "os" "testing" ) type Event struct { Id int `gorm:"primaryKey" json:"id"` Name string `gorm:"column:name" json:"name"` Attendees []*Member `gorm:"many2many:member_events;"` } type Member struct { Id int `gorm:"primaryKey" json:"id"` FirstName string `gorm:"column:firstName" json:"firstName,omitempty"` LastName string `gorm:"column:lastName" json:"lastName,omitempty"` ResponsiblePersonID *int `json:"responsiblePersonId"` ResponsiblePerson *Member `gorm:"foreignKey:ResponsiblePersonID" json:"responsiblePerson"` Events []*Event `gorm:"many2many:member_events;" json:"events"` } func TestDbHandler(t *testing.T) { dbHandler, err := NewDBHandler("test.db", "test", nil) if err != nil { t.Fatal(err) } if err := dbHandler.AddNewTable(&Member{}); err != nil { t.Fatal(err) } if err := dbHandler.AddNewTable(&Event{}); err != nil { t.Fatal(err) } membersIN := []*Member{{FirstName: "adrian", LastName: "zuercher"}, {FirstName: "adichild", LastName: "zuercher"}} for _, member := range membersIN { dbHandler.AddNewColum(member) event := &Event{ Name: "testEvent", } dbHandler.AddNewColum(event) dbHandler.AddRelation(event, member, "Attendees") } var members []Member if err := dbHandler.GetById(&members, "", 0); err != nil { t.Fatal(err) } t.Log(members) if err := dbHandler.GetById(&members, "Events", 0); err != nil { t.Fatal(err) } t.Log(members) for _, member := range members { t.Log("Member:", member.FirstName, member.LastName) for _, event := range member.Events { t.Log("Event:", event) } } var events []Event if err := dbHandler.GetById(&events, "Attendees", 0); err != nil { t.Fatal(err) } for _, event := range events { t.Log("event:", event.Name) for _, member := range event.Attendees { t.Log("attendee:", member) } } //add responsible mem1 := &Member{} if err := dbHandler.GetById(mem1, "", 2); err != nil { t.Fatal(err) } mem2 := &Member{} if err := dbHandler.GetById(mem2, "", 1); err != nil { t.Fatal(err) } mem1.ResponsiblePerson = mem2 dbHandler.UpdateValuesById(mem1, "", uint(mem1.Id)) if err := dbHandler.GetById(mem1, "", 2); err != nil { t.Fatal(err) } t.Log(mem1) t.Log(mem1.ResponsiblePerson) if err := dbHandler.Close(); err != nil { t.Fatal(err) } if err := os.RemoveAll("test"); err != nil { t.Fatal(err) } }