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) } }