diff --git a/pkg/expr/expr_test.go b/pkg/expr/expr_test.go index 0c6085da8648a1e0b53f0f14b510598195764d52..f8909daadd2af1854100982d7a81f3cf86692f42 100644 --- a/pkg/expr/expr_test.go +++ b/pkg/expr/expr_test.go @@ -1,13 +1,11 @@ package expr import ( - "context" "fmt" "testing" "time" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) func TestIsExpression(t *testing.T) { @@ -60,65 +58,3 @@ func TestIsExpression(t *testing.T) { }) } } - -type testEnvStruct struct { - ID string `expr:"id"` - Size int `expr:"size"` - Data interface{} `expr:"data"` -} - -func TestEval_StructInEnv(t *testing.T) { - ctx := context.Background() - - tests := []struct { - name string - exp string - env map[string]interface{} - wantErr bool - wantResult interface{} - }{ - { - name: "get field by expr tag", - exp: "s.id", - env: map[string]interface{}{"s": &testEnvStruct{ID: "id1"}}, - wantResult: "id1", - }, - { - name: "get field by field name", - exp: "s.ID", - env: map[string]interface{}{"s": &testEnvStruct{ID: "id1"}}, - wantResult: "id1", - }, - { - name: "get nested field", - exp: "m.s.size", - env: map[string]interface{}{"m": map[string]interface{}{"s": &testEnvStruct{Size: 1}}}, - wantResult: 1, - }, - { - name: "check field", - exp: "s.data.size < 100", - env: map[string]interface{}{"s": &testEnvStruct{Data: &testEnvStruct{Size: 0}}}, - wantResult: true, - }, - { - name: "field not exists", - exp: "s.not_exists", - env: map[string]interface{}{"s": &testEnvStruct{}}, - wantErr: true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - result, err := Eval(ctx, tt.exp, tt.env) - if tt.wantErr { - require.Error(t, err) - return - } - - require.NoError(t, err) - require.Equal(t, tt.wantResult, result) - }) - } -} diff --git a/pkg/expr/mongo_test.go b/pkg/expr/mongo_test.go index a804c3bd6ae09979d74bffaec7946e497f4b2cef..1dde0f3795e303cac0a0499e30d68d84d6be1234 100644 --- a/pkg/expr/mongo_test.go +++ b/pkg/expr/mongo_test.go @@ -90,39 +90,6 @@ func TestConvertToMongo(t *testing.T) { } } -func TestConvertToMongo_StructInEnv(t *testing.T) { - ctx := context.Background() - - tests := []struct { - name string - exp string - env map[string]interface{} - wantErr bool - wantResult interface{} - }{ - { - name: "get field", - exp: "db_item.id == env_item.id", - env: map[string]interface{}{"env_item": &testEnvStruct{ID: "id1"}}, - wantResult: bson.M{"db_item.id": "id1"}, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - result, err := ConvertToMongo(ctx, tt.exp, tt.env, nil) - if tt.wantErr { - require.Error(t, err) - return - } - - require.NoError(t, err) - require.Equal(t, tt.wantResult, result) - }) - } -} - - func BenchmarkConvertToMongo(b *testing.B) { const idsNum = 1_000_000 ctx := context.Background() diff --git a/pkg/files/file.go b/pkg/files/file.go index d2236b83368e3d5efc763fd6f7e53664e15cc827..5700309d4e180d8a242eccc87bf8ed4581ff39bd 100644 --- a/pkg/files/file.go +++ b/pkg/files/file.go @@ -16,13 +16,13 @@ const ( // File - описание файла РІ системе хранения perxis type File struct { - ID string `mapstructure:"id,omitempty" json:"id" expr:"id"` // Уникальный идентификатор файла РІ хранилище - Name string `mapstructure:"name,omitempty" json:"name" bson:"name,omitempty" expr:"name"` // РРјСЏ файла - Size int `mapstructure:"size,omitempty" json:"size" bson:"size,omitempty" expr:"size"` // Размер файла + ID string `mapstructure:"id,omitempty" json:"id" expr:"id"` // Уникальный идентификатор файла РІ хранилище + Name string `mapstructure:"name,omitempty" json:"name" bson:"name,omitempty" expr:"name"` // РРјСЏ файла + Size int `mapstructure:"size,omitempty" json:"size" bson:"size,omitempty" expr:"size"` // Размер файла MimeType string `mapstructure:"mimeType,omitempty" json:"mimeType" bson:"mimeType,omitempty" expr:"mime_type"` // Mime-type файла - URL string `mapstructure:"url,omitempty" json:"url" bson:"url,omitempty" expr:"url"` // Адрес для загрузки файла - Key string `mapstructure:"key,omitempty" json:"key" bson:"key,omitempty" expr:"key"` // Ключ для хранения файла РІ хранилище - File fs.File `mapstructure:"-" json:"-" bson:"-"` // Файл для загрузки(РёР· файловой системы) + URL string `mapstructure:"url,omitempty" json:"url" bson:"url,omitempty" expr:"url"` // Адрес для загрузки файла + Key string `mapstructure:"key,omitempty" json:"key" bson:"key,omitempty" expr:"key"` // Ключ для хранения файла РІ хранилище + File fs.File `mapstructure:"-" json:"-" bson:"-"` // Файл для загрузки(РёР· файловой системы) } func (f File) Clone() *File {