Skip to content
Snippets Groups Projects
Select Git revision
  • 32c606976bdc3abad0d72e13dbee7c8af1491a9d
  • master default protected
  • feature/PRXS-3383-CollectionsSort
  • feature/2781-SpacesLoggingMiddleware
  • feature/PRXS-3421-ImplementNewRefAPI
  • feature/PRXS-3143-3235-ReferenceOptions
  • feature/PRXS-3143-LimitReferenceFields
  • feature/PRXS-3234-FeaturePruneIdents
  • PRXS-3421-RecursiveReferences
  • 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
  • feature/PRXS-3218-HideTemplateActions
  • feature/PRXS-3234-PruneIdents
  • 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

middleware.go

Blame
  • loader_test.go 5.40 KiB
    package schemaloader
    
    import (
    	"context"
    	"fmt"
    	"testing"
    
    	"github.com/stretchr/testify/assert"
    )
    
    //func Test_Load(t *testing.T) {
    //
    //	const (
    //		spaceID = "SpaceID"
    //		envID   = "envID"
    //		colID   = "colID"
    //		uri     = "/colID#fieldID"
    //	)
    //
    //	t.Run("Load schema (success)", func(t *testing.T) {
    //		collSvs := &mocks.Collections{}
    //
    //		sch := schema.New(
    //			"first_name", field.String(),
    //			"last_name", field.String(),
    //		)
    //
    //		cl := &collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "Collection", Schema: sch}
    //		collSvs.On("List", mock.Anything, spaceID, envID, mock.AnythingOfType("*collections.Filter")).Run(func(args mock.Arguments) {
    //			filter := args[3].(*collections.Filter)
    //
    //			assert.Equal(t, &collections.Filter{ID: []string{"colID"}}, filter, "Фильтр должен содержать идентификатор коллекции")
    //		}).Return([]*collections.Collection{cl}, nil).Once()
    //
    //		loader := NewLoader(collSvs, spaceID, envID)
    //		schemas, err := loader.Load(nil, uri)
    //
    //		require.NoError(t, err, "Ожидается успешное завершение")
    //		require.Equal(t, []*field.Field{&sch.Field}, schemas, "Метод должен возвращать срез схем")
    //		collSvs.AssertExpectations(t)
    //	})
    //
    //	t.Run("Collection doesn't have schema", func(t *testing.T) {
    //		collSvs := &mocks.Collections{}
    //
    //		cl := &collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "Collection"}
    //		collSvs.On("List", mock.Anything, spaceID, envID, mock.AnythingOfType("*collections.Filter")).Run(func(args mock.Arguments) {
    //			filter := args[3].(*collections.Filter)
    //
    //			assert.Equal(t, &collections.Filter{ID: []string{"colID"}}, filter, "Фильтр должен содержать идентификатор коллекции")
    //		}).Return([]*collections.Collection{cl}, nil).Once()
    //
    //		loader := NewLoader(collSvs, spaceID, envID)
    //		schemas, err := loader.Load(nil, uri)
    //
    //		require.Error(t, err, "Ожидается ошибка")
    //		require.Contains(t, err.Error(), "schema not found")
    //		require.Nil(t, schemas, "Метод должен вернуть nil")
    //		//assert.Nil(t, schemas, "Метод должен вернуть nil")
    //		collSvs.AssertExpectations(t)
    //	})
    //
    //	t.Run("Loader not found collection", func(t *testing.T) {
    //		collSvs := &mocks.Collections{}
    //
    //		collSvs.On("List", mock.Anything, spaceID, envID, mock.AnythingOfType("*collections.Filter")).Run(func(args mock.Arguments) {
    //			filter := args[3].(*collections.Filter)
    //
    //			assert.Equal(t, &collections.Filter{ID: []string{"colID"}}, filter, "Фильтр должен содержать идентификатор коллекции")
    //		}).Return([]*collections.Collection{}, nil).Once()
    //
    //		loader := NewLoader(collSvs, spaceID, envID)
    //		schemas, err := loader.Load(nil, uri)
    //
    //		require.Error(t, err, "Ожидается ошибка")
    //		require.Contains(t, err.Error(), "schema not found")
    //		require.Nil(t, schemas, "Метод должен вернуть nil")
    //		collSvs.AssertExpectations(t)
    //	})
    //
    //	t.Run("Collection service return error", func(t *testing.T) {
    //		collSvs := &mocks.Collections{}
    //
    //		collSvs.On("List", mock.Anything, spaceID, envID, mock.AnythingOfType("*collections.Filter")).Run(func(args mock.Arguments) {
    //			filter := args[3].(*collections.Filter)
    //
    //			assert.Equal(t, &collections.Filter{ID: []string{"colID"}}, filter, "Фильтр должен содержать идентификатор коллекции")
    //		}).Return(nil, errors.New("storage error")).Once()
    //
    //		loader := NewLoader(collSvs, spaceID, envID)
    //		schemas, err := loader.Load(nil, uri)
    //
    //		require.Error(t, err, "Ожидается ошибка")
    //		require.Contains(t, err.Error(), "failed to get schema")
    //		require.Nil(t, schemas, "Метод должен вернуть nil")
    //		collSvs.AssertExpectations(t)
    //	})
    //
    //	t.Run("ParseMask return error", func(t *testing.T) {
    //		collSvs := &mocks.Collections{}
    //
    //		loader := NewLoader(collSvs, spaceID, envID)
    //		schemas, err := loader.Load(nil, "")
    //
    //		require.Error(t, err, "Ожидается ошибка")
    //		require.Contains(t, err.Error(), "invalid schema reference")
    //		require.Nil(t, schemas, "Метод должен вернуть nil")
    //		collSvs.AssertExpectations(t)
    //	})
    //}
    
    func Test_parseRef(t *testing.T) {
    	ctx := WithContext(nil, &LoaderContext{SpaceID: "spc", EnvID: "env"})
    	tests := []struct {
    		ref            string
    		ctx            context.Context
    		wantSpaceID    string
    		wantEnvId      string
    		wantCollection string
    		wantErr        assert.ErrorAssertionFunc
    	}{
    		{"col", ctx, "spc", "env", "col", assert.NoError},
    		{"/col", ctx, "spc", "master", "col", assert.NoError},
    		{"spc1/env1/col", ctx, "spc1", "env1", "col", assert.NoError},
    		{"spc1/env1/col#fld", ctx, "spc1", "env1", "col", assert.NoError},
    		{"col%3f*", ctx, "spc", "env", "col?*", assert.NoError},
    		{"#fld", ctx, "spc", "env", "", assert.Error},
    	}
    
    	for _, tt := range tests {
    		t.Run(tt.ref, func(t *testing.T) {
    			gotSpaceID, gotEnvId, gotCollection, err := parseRef(tt.ctx, tt.ref)
    			if !tt.wantErr(t, err, fmt.Sprintf("parseRef(%v)", tt.ref)) {
    				return
    			}
    			assert.Equalf(t, tt.wantSpaceID, gotSpaceID, "parseRef(%v)", tt.ref)
    			assert.Equalf(t, tt.wantEnvId, gotEnvId, "parseRef(%v)", tt.ref)
    			assert.Equalf(t, tt.wantCollection, gotCollection, "parseRef(%v)", tt.ref)
    		})
    	}
    }