Select Git revision
__init__.py
reference_test.go 1.65 KiB
package references
import (
"context"
"fmt"
"testing"
"git.perx.ru/perxis/perxis-go/pkg/expr"
"github.com/mitchellh/mapstructure"
"github.com/stretchr/testify/require"
)
func TestReference_InExpr(t *testing.T) {
ctx := context.Background()
tests := []struct {
exp string
env map[string]interface{}
wantResult interface{}
wantErr bool
}{
{"r.id", map[string]interface{}{"r": &Reference{ID: "some_id"}}, "some_id", false},
{"r.collection_id", map[string]interface{}{"r": &Reference{CollectionID: "some_coll_id"}}, "some_coll_id", false},
{"r.disabled", map[string]interface{}{"r": &Reference{Disabled: true}}, true, false},
{"r.String()", map[string]interface{}{"r": &Reference{ID: "id", CollectionID: "collID"}}, "collID.id", false},
{"r1.Equal(r2)", map[string]interface{}{"r1": &Reference{"id", "collID", false}, "r2": &Reference{"id", "collID", false}}, true, false},
{"r.IsValid()", map[string]interface{}{"r": &Reference{}}, false, false},
{"r.not_exists", map[string]interface{}{"r": &Reference{}}, false, true},
}
for _, tt := range tests {
t.Run(tt.exp, func(t *testing.T) {
result, err := expr.Eval(ctx, tt.exp, tt.env)
if tt.wantErr {
require.Error(t, err)
return
}
require.NoError(t, err)
require.Equal(t, tt.wantResult, result)
})
}
}
func TestReference_encode(t *testing.T) {
var result map[string]any
dec, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{TagName: "json", Result: &result})
require.NoError(t, err)
err = dec.Decode(&Reference{
ID: "ref_id",
CollectionID: "coll_id",
Disabled: false,
})
require.NoError(t, err)
fmt.Println(result)
}