Skip to content
Snippets Groups Projects
Select Git revision
  • 73c14d86f15b218adc177230cb19dfb8ad6ad039
  • master default protected
  • refactor/PRXS-3053-Files
  • feature/PRXS-3143-3235-ReferenceOptions
  • feature/PRXS-3421-ImplementNewRefAPI
  • feature/PRXS-3143-LimitReferenceFields
  • feature/PRXS-3234-FeaturePruneIdents
  • feature/3149-LocaleCodeAsID-Feature
  • feature/PRXS-3383-CollectionsRankSortAPI
  • PRXS-3421-RecursiveReferences
  • feature/PRXS-3383-CollectionsSort
  • feature/3109-SerializeFeature
  • release/0.33
  • feature/3109-RecoverySchema
  • feature/3109-feature
  • fix/PRXS-3369-ValidateFields
  • refactor/PRXS-3306-MovePkgGroup1
  • refactor/6-pkg-refactor-expr
  • fix/PRXS-3360-TemplateBuilderPatch
  • feature/3293-MongoV2
  • feature/3272-GoVersionUp
  • v0.33.1
  • v0.32.0
  • v0.31.1
  • v0.31.0
  • v0.30.0
  • v0.29.0
  • v0.28.0
  • v0.27.0-alpha.1+16
  • v0.27.0-alpha.1+15
  • v0.27.0-alpha.1+14
  • v0.27.0-alpha.1+13
  • v0.27.0-alpha.1+12
  • v0.27.0-alpha.1+11
  • v0.27.0-alpha.1+10
  • v0.27.0-alpha.1+9
  • v0.27.0-alpha.1+8
  • v0.27.0-alpha.1+7
  • v0.27.0-alpha.1+6
  • v0.27.0-alpha.1+5
  • v0.27.0-alpha.1+4
41 results

boolean.go

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