75 lines
1.6 KiB
Go
75 lines
1.6 KiB
Go
package orm
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/Jeffail/gabs"
|
|
"github.com/stretchr/testify/assert"
|
|
"testing"
|
|
)
|
|
|
|
func TestJsonSerialize(t *testing.T) {
|
|
e := initTest(t)
|
|
defer e.Disconnect()
|
|
u := author(t)
|
|
err := e.Model(&user{}).Save(&u)
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
}
|
|
assert.Nil(t, err)
|
|
insertBands(t, e)
|
|
ns := storyBase(e, t, u, "Chapters.Bands")
|
|
bytes, err := JSONSerialize(ns, true)
|
|
assert.Nil(t, err)
|
|
fmt.Println(string(bytes))
|
|
}
|
|
|
|
func TestJSONDeserialize(t *testing.T) {
|
|
e := initTest(t)
|
|
defer e.Disconnect()
|
|
u := author(t)
|
|
err := e.Model(&user{}).Save(&u)
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
}
|
|
assert.Nil(t, err)
|
|
insertBands(t, e)
|
|
ns := storyBase(e, t, u, "Chapters.Bands")
|
|
bytes, err := JSONSerialize(ns, true)
|
|
assert.Nil(t, err)
|
|
fmt.Println(string(bytes))
|
|
msi := make(map[string]any)
|
|
err = json.Unmarshal(bytes, &msi)
|
|
assert.Nil(t, err)
|
|
obj, err := gabs.Consume(msi)
|
|
assert.Nil(t, err)
|
|
children, err := obj.S("chapters").Children()
|
|
assert.Nil(t, err)
|
|
for _, child := range children {
|
|
bands := child.S("bands")
|
|
var bcontainer []*gabs.Container
|
|
bcontainer, err = bands.Children()
|
|
assert.Nil(t, err)
|
|
if err != nil {
|
|
break
|
|
}
|
|
for j := range bcontainer {
|
|
id := bcontainer[j].S("_id").Data()
|
|
//obj.S("chapters").Index(i).S("bands").Index
|
|
_, err = bands.SetIndex(id, j)
|
|
assert.Nil(t, err)
|
|
if err != nil {
|
|
break
|
|
}
|
|
}
|
|
}
|
|
nbytes := obj.Bytes()
|
|
var des story
|
|
err = JSONDeserialize(&des, nbytes)
|
|
assert.Nil(t, err)
|
|
for _, c := range des.Chapters {
|
|
assert.NotNil(t, c.Bands)
|
|
assert.GreaterOrEqual(t, len(c.Bands), 1)
|
|
}
|
|
}
|