127 lines
2.9 KiB
Go
127 lines
2.9 KiB
Go
package orm
|
|
|
|
import (
|
|
"fmt"
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestNew(t *testing.T) {
|
|
initTest()
|
|
doc := Create(&iti_single).(*story)
|
|
assert.Equal(t, iti_single.Title, doc.Title)
|
|
assert.Equal(t, iti_single.Chapters[0].Summary, doc.Chapters[0].Summary)
|
|
}
|
|
|
|
func TestSave(t *testing.T) {
|
|
initTest()
|
|
storyDoc := Create(iti_multi).(*story)
|
|
lauthor := Create(author).(*user)
|
|
storyDoc.Author = lauthor
|
|
assert.Equal(t, storyDoc.Id(), int64(0))
|
|
assert.Equal(t, lauthor.ID, storyDoc.Author.ID)
|
|
aerr := lauthor.Save()
|
|
assert.Equal(t, nil, aerr)
|
|
serr := storyDoc.Save()
|
|
assert.Equal(t, nil, serr)
|
|
assert.Less(t, int64(0), storyDoc.ID)
|
|
assert.Less(t, int64(0), lauthor.ID)
|
|
}
|
|
|
|
func TestPopulate(t *testing.T) {
|
|
initTest()
|
|
|
|
bandDoc := Create(iti_single.Chapters[0].Bands[0]).(*band)
|
|
storyDoc := Create(iti_single).(*story)
|
|
author := Create(author).(*user)
|
|
|
|
err := bandDoc.Save()
|
|
assert.Equal(t, nil, err)
|
|
storyDoc.Author = author
|
|
err = storyDoc.Save()
|
|
assert.Equal(t, nil, err)
|
|
assert.Greater(t, storyDoc.ID, int64(0))
|
|
|
|
smodel := Create(story{}).(*story)
|
|
q, err := smodel.FindByID(storyDoc.ID)
|
|
assert.Equal(t, nil, err)
|
|
assert.NotPanics(t, func() {
|
|
foundDoc := &story{}
|
|
q.Populate("Author", "Chapters.Bands").Exec(foundDoc)
|
|
j, _ := q.JSON()
|
|
fmt.Printf("%s\n", j)
|
|
})
|
|
}
|
|
|
|
func TestUpdate(t *testing.T) {
|
|
initTest()
|
|
nb := Create(band{
|
|
ID: 1,
|
|
Name: "Metallica",
|
|
Characters: []string{
|
|
"James Hetfield",
|
|
"Lars Ulrich",
|
|
"Kirk Hammett",
|
|
"Cliff Burton",
|
|
},
|
|
Locked: false,
|
|
}).(*band)
|
|
err := nb.Save()
|
|
assert.Equal(t, nil, err)
|
|
nb.Locked = true
|
|
err = nb.Save()
|
|
assert.Equal(t, nil, err)
|
|
|
|
foundM := Create(band{}).(*band)
|
|
q, err := foundM.FindByID(int64(1))
|
|
found := &band{}
|
|
q.Exec(found)
|
|
assert.Equal(t, nil, err)
|
|
assert.Equal(t, int64(1), found.ID)
|
|
assert.Equal(t, nil, err)
|
|
assert.Equal(t, true, found.Locked)
|
|
}
|
|
|
|
func TestModel_FindAll(t *testing.T) {
|
|
initTest()
|
|
smodel := Create(story{}).(*story)
|
|
query, err := smodel.FindAll(bson.M{}, options.Find())
|
|
assert.Equal(t, nil, err)
|
|
final := make([]story, 0)
|
|
query.Exec(&final)
|
|
assert.Greater(t, len(final), 0)
|
|
}
|
|
|
|
func TestModel_PopulateMulti(t *testing.T) {
|
|
initTest()
|
|
smodel := Create(story{}).(*story)
|
|
query, err := smodel.FindAll(bson.M{}, options.Find())
|
|
assert.Equal(t, nil, err)
|
|
final := make([]story, 0)
|
|
query.Populate("Author", "Chapters.Bands").Exec(&final)
|
|
assert.Greater(t, len(final), 0)
|
|
}
|
|
|
|
func TestModel_Append(t *testing.T) {
|
|
initTest()
|
|
bmodel := Create(band{}).(*band)
|
|
query, err := bmodel.FindByID(int64(1))
|
|
assert.Equal(t, nil, err)
|
|
fin := &band{}
|
|
query.Exec(fin)
|
|
assert.Greater(t, fin.ID, int64(0))
|
|
|
|
err = bmodel.Append("Characters", "Robert Trujillo")
|
|
assert.Equal(t, nil, err)
|
|
err = bmodel.Save()
|
|
assert.Equal(t, nil, err)
|
|
fin = &band{}
|
|
query, _ = bmodel.FindByID(int64(1))
|
|
query.Exec(fin)
|
|
assert.Greater(t, len(fin.Characters), 4)
|
|
|
|
}
|