Skip to content
Snippets Groups Projects
Select Git revision
  • 370cdf26a7d102e5c30221e1a974b0ad7b4acac7
  • master default protected
  • feature/PRXS-3383-CollectionsSort
  • 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
  • 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
  • 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

error_logging_middleware.go

Blame
  • extension_test.go 4.07 KiB
    package extension
    
    import (
    	"testing"
    
    	"git.perx.ru/perxis/perxis-go/pkg/collections"
    	"git.perx.ru/perxis/perxis-go/pkg/errors"
    	"git.perx.ru/perxis/perxis-go/pkg/schema"
    	"git.perx.ru/perxis/perxis-go/pkg/schema/field"
    	"git.perx.ru/perxis/perxis-go/pkg/setup"
    	"github.com/stretchr/testify/assert"
    )
    
    func Test_isMetadataEqual(t *testing.T) {
    	tests := []struct {
    		name string
    		s1   *schema.Schema
    		s2   *schema.Schema
    		want bool
    	}{
    		{
    			"Not equal #1 (no metadata)",
    			schema.New("name", field.String()).WithMetadata(MetadataKey, "test"),
    			schema.New("name", field.String()),
    			false,
    		},
    		{
    			"Not equal #2 (different metadata)",
    			schema.New("name", field.String()).WithMetadata(MetadataKey, "test"),
    			schema.New("name", field.String()).WithMetadata("test", "test"),
    			false,
    		},
    		{
    			"Equal #1 (no metadata)",
    			schema.New("name", field.String()),
    			schema.New("name", field.String()),
    			true,
    		},
    		{
    			"Equal #2 (equal metadata)",
    			schema.New("name", field.String()).WithMetadata(MetadataKey, "test"),
    			schema.New("name", field.String()).WithMetadata(MetadataKey, "test"),
    			true,
    		},
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    			assert.Equalf(t, tt.want, isMetadataEqual(tt.s1, tt.s2), "isMetadataExtensionEqual(%v, %v)", tt.s1, tt.s2)
    		})
    	}
    }
    
    func TestDefaultUpdateCollectionStrategyFn(t *testing.T) {
    	tests := []struct {
    		name       string
    		exist      *collections.Collection
    		collection *collections.Collection
    		force      bool
    		wantErr    func(err error)
    	}{
    		{
    			name: "collection belongs to extension",
    			exist: &collections.Collection{ID: "coll", SpaceID: "sp", EnvID: "env",
    				Schema: schema.New("name", field.String()).WithMetadata("extension", "extension-1")},
    			collection: &collections.Collection{ID: "coll", SpaceID: "sp", EnvID: "env", Name: "new name",
    				Schema: schema.New("name", field.String()).WithMetadata("extension", "extension-1")},
    			wantErr: nil,
    		},
    		{
    			name: "collection belongs to another extension",
    			exist: &collections.Collection{ID: "coll", SpaceID: "sp", EnvID: "env",
    				Schema: schema.New("name", field.String()).WithMetadata("extension", "extension-1")},
    			collection: &collections.Collection{ID: "coll", SpaceID: "sp", EnvID: "env", Name: "new name",
    				Schema: schema.New("name", field.String()).WithMetadata("extension", "extension-2")},
    			wantErr: func(err error) {
    				assert.ErrorIs(t, err, collections.ErrAlreadyExists)
    				assert.Equal(t, "Коллекция с идентификатором 'coll' уже существует. Удалите ее или "+
    					"вызовите установку расширения с флагом Force", errors.GetDetail(err))
    			},
    		},
    		{
    			name: "collection was created by user",
    			exist: &collections.Collection{ID: "coll", SpaceID: "sp", EnvID: "env",
    				Schema: schema.New("name", field.String())},
    			collection: &collections.Collection{ID: "coll", SpaceID: "sp", EnvID: "env", Name: "new name",
    				Schema: schema.New("name", field.String()).WithMetadata("extension", "extension-1")},
    			wantErr: func(err error) {
    				assert.ErrorIs(t, err, collections.ErrAlreadyExists)
    				assert.Equal(t, "Коллекция с идентификатором 'coll' уже существует. Удалите ее или "+
    					"вызовите установку расширения с флагом Force", errors.GetDetail(err))
    			},
    		},
    		{
    			name: "collection was created by user with force",
    			exist: &collections.Collection{ID: "coll", SpaceID: "sp", EnvID: "env",
    				Schema: schema.New("name", field.String()).WithMetadata("extension", "extension-1")},
    			collection: &collections.Collection{ID: "coll", SpaceID: "sp", EnvID: "env", Name: "new name",
    				Schema: schema.New("name", field.String()).WithMetadata("extension", "extension-1")},
    			force:   true,
    			wantErr: nil,
    		},
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    			set := setup.NewSetup(nil, "sp", "env", nil).WithForce(tt.force)
    			_, _, _, err := UpdateCollectionStrategy(set, tt.exist, tt.collection)
    			if tt.wantErr != nil {
    				tt.wantErr(err)
    				return
    			}
    		})
    	}
    }