package orm import ( "github.com/stretchr/testify/assert" "testing" ) func TestSave1(t *testing.T) { e := initTest(t) u := author() err := e.Model(&user{}).Create(&u) assert.Nil(t, err) f := friend() err = e.Model(&user{}).Create(&f) assert.Nil(t, err) assert.NotZero(t, f.ID) oldFavid := u.Favs.ID u.Favs.Authors = append(u.Favs.Authors, f) err = e.Model(&user{}).Save(&u) assert.Nil(t, err) assert.NotZero(t, u.Favs.ID) assert.Equal(t, oldFavid, u.Favs.ID) } func TestSave2(t *testing.T) { e := initTest(t) insertBands(t, e) u := author() err := e.Model(&user{}).Create(&u) assert.Nil(t, err) assert.NotZero(t, u.Favs.ID) s := iti_multi(u) err = e.Model(&story{}).Save(s) assert.Nil(t, err) assert.NotZero(t, s.ID) checkChapters(t, s) s.Downloads = s.Downloads + 1 err = e.Model(&story{}).Save(s) assert.Nil(t, err) var ns story err = e.Model(&story{}).Where("ID = ?", s.ID).Find(&ns) assert.Nil(t, err) assert.NotZero(t, ns.ID) assert.NotZero(t, ns.Title) assert.Equal(t, ns.Downloads, s.Downloads) } func TestUpdateRaw1(t *testing.T) { e := initTest(t) insertBands(t, e) u := author() err := e.Model(&user{}).Create(&u) assert.Nil(t, err) s1 := iti_multi(u) err = e.Model(&story{}).Save(s1) assert.Nil(t, err) assert.NotZero(t, s1.ID) checkChapters(t, s1) s2 := iti_single(u) err = e.Model(&story{}).Save(s2) assert.Nil(t, err) assert.NotZero(t, s2.ID) checkChapters(t, s2) umap := make(map[string]any) umap["Characters"] = `array_remove(characters, 'Brian Tatler')` ra, err := e.Model(&chapter{}).WhereRaw("1 = ?", 1).UpdateRaw(umap) assert.NotZero(t, ra) assert.Nil(t, err) stories := make([]story, 0) err = e.Model(&story{}).Populate(PopulateAll, "Chapters.Bands").Find(&stories) assert.Nil(t, err) assert.NotEmpty(t, stories) for _, ss := range stories { checkChapters(t, &ss) for _, c := range ss.Chapters { steppedInShit := false for _, b := range c.Characters { if b == "Brian Tatler" { steppedInShit = true break } } assert.False(t, steppedInShit) } } }