Select Git revision
item_test.go
item_test.go 2.30 KiB
package items
import (
"fmt"
"testing"
"time"
"git.perx.ru/perxis/perxis-go/pkg/schema"
"git.perx.ru/perxis/perxis-go/pkg/schema/field"
"github.com/stretchr/testify/assert"
)
func TestItem_Set(t *testing.T) {
item := &Item{}
item.Set("id", "id")
assert.Equal(t, "id", item.ID)
now := time.Now()
item.Set("created_at", now)
assert.Equal(t, now, item.CreatedAt)
item.Set("a.b.c", 101)
assert.Equal(t, map[string]any{"a": map[string]any{"b": map[string]any{"c": 101}}}, item.Data)
}
func TestItem_DeleteItemData(t *testing.T) {
tests := []struct {
name string
item *Item
field string
want map[string]any
wantErr assert.ErrorAssertionFunc
}{
{
name: "Simple",
item: &Item{Data: map[string]any{"a": "b", "c": "d"}},
field: "a",
want: map[string]any{"c": "d"},
wantErr: assert.NoError,
},
{
name: "Item data is nil",
item: &Item{Data: nil},
field: "a",
want: nil,
wantErr: assert.NoError,
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
err := tc.item.Delete(tc.field)
assert.NoError(t, err)
if !tc.wantErr(t, err) {
return
}
assert.Equal(t, tc.want, tc.item.Data)
})
}
}
func TestGetField(t *testing.T) {
sch := schema.New(
"a", field.String(),
"obj", field.Object(
"a", field.Number(field.NumberFormatFloat),
"b", field.String(),
),