Skip to content
Snippets Groups Projects
Commit 3f95e04e authored by ko_oler's avatar ko_oler
Browse files

- правки при работе с view-коллекциями

- добавлены тесты
parent e4de3d81
No related branches found
No related tags found
No related merge requests found
......@@ -139,16 +139,17 @@ func (s *Setup) InstallCollection(ctx context.Context, c CollectionConfig) (setS
collection.SpaceID, collection.EnvID = s.SpaceID, s.EnvironmentID
var exist *collections.Collection
// isForce - не удалять коллекцию, если она уже существует
exist, err = s.content.Collections.Get(ctx, collection.SpaceID, collection.EnvID, collection.ID)
if err != nil && !strings.Contains(err.Error(), collections.ErrNotFound.Error()) {
return false, err
}
if c.metadata != nil {
if !collection.IsView() {
for k, v := range c.metadata {
collection.Schema.WithMetadata(k, v)
}
//setMD = true
}
if exist == nil {
......@@ -158,10 +159,11 @@ func (s *Setup) InstallCollection(ctx context.Context, c CollectionConfig) (setS
return false, err
}
} else {
if !collection.IsView() && !exist.IsView() {
if collection.Schema.Metadata != nil && exist.Schema.Metadata[extension.ExtensionMetadataKey] != collection.Schema.Metadata[extension.ExtensionMetadataKey] && !s.IsForce() {
return false, ErrCollectionAlreadyExists
}
}
var upd bool
collection, upd, setSchema = c.UpdateFn(s, exist, c.collection)
if upd {
......
......@@ -137,6 +137,37 @@ func TestSetup_InstallCollections(t *testing.T) {
co: SetSchemaMetadata("extension", "test-extension"),
force: true,
},
{
name: "Update exist view collection with the same id",
collections: []*collections.Collection{{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata("extension", "test-extension")}},
collectionsCall: func(svc *mockscollections.Collections) {
svc.On("Get", mock.Anything, "sp", "env", "1").Return(&collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", View: &collections.View{SpaceID: "sp2", EnvID: environments.DefaultEnvironment, CollectionID: "2"}}, nil).Once()
svc.On("Update", mock.Anything, &collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata("extension", "test-extension")}).Return(nil).Once()
svc.On("SetSchema", mock.Anything, "sp", "env", "1", schema.New("name", field.String()).WithMetadata("extension", "test-extension")).Return(nil).Once()
},
envsCall: func(svc *envmocks.Environments) {
svc.On("Migrate", mock.Anything, "sp", "env", &environments.MigrateOptions{Wait: true}).Return(nil).Once()
},
wantErr: func(t *testing.T, err error) {
assert.NoError(t, err)
},
co: SetSchemaMetadata("extension", "test-extension"),
},
{
name: "Update view collection with the same id to new view collection",
collections: []*collections.Collection{{ID: "1", SpaceID: "sp", EnvID: "env", View: &collections.View{SpaceID: "sp3", EnvID: environments.DefaultEnvironment, CollectionID: "3"}}},
collectionsCall: func(svc *mockscollections.Collections) {
svc.On("Get", mock.Anything, "sp", "env", "1").Return(&collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", View: &collections.View{SpaceID: "sp2", EnvID: environments.DefaultEnvironment, CollectionID: "2"}}, nil).Once()
svc.On("Update", mock.Anything, &collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", View: &collections.View{SpaceID: "sp3", EnvID: environments.DefaultEnvironment, CollectionID: "3"}}).Return(nil).Once()
},
envsCall: func(svc *envmocks.Environments) {
svc.On("Migrate", mock.Anything, "sp", "env", &environments.MigrateOptions{Wait: true}).Return(nil).Once()
},
wantErr: func(t *testing.T, err error) {
assert.NoError(t, err)
},
co: SetSchemaMetadata("extension", "test-extension"),
},
}
for _, tt := range tests {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment