From 53cb3583d6b1ebed26e439d11f5e4537cba801ef Mon Sep 17 00:00:00 2001 From: ko_oler <kooler89@gmail.com> Date: Mon, 14 Aug 2023 13:26:48 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=20=D0=B2?= =?UTF-8?q?=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D1=8B=D0=B9=20=D1=84=D0=BB?= =?UTF-8?q?=D0=B0=D0=B3=20=5FalwaysSetSchema,=20=D0=BA=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D1=8B=D0=B9=20=D0=BF=D0=BE=D0=B7=D0=B2=D0=BE=D0=BB=D1=8F?= =?UTF-8?q?=D0=BB=20Setup=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B7=D0=B0=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D1=8B=D0=B2=D0=B0=D1=82=D1=8C=20=D1=81=D1=85=D0=B5?= =?UTF-8?q?=D0=BC=D1=8B=20=D0=BA=D0=BE=D0=BB=D0=BB=D0=B5=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D0=B9=20=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=BF=D0=BE=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/setup/collection.go | 9 ++------- pkg/setup/collection_test.go | 23 +++++++++++------------ pkg/setup/setup_test.go | 15 --------------- 3 files changed, 13 insertions(+), 34 deletions(-) diff --git a/pkg/setup/collection.go b/pkg/setup/collection.go index db7a919e..fcce47d6 100644 --- a/pkg/setup/collection.go +++ b/pkg/setup/collection.go @@ -19,11 +19,6 @@ var ( ErrUninstallCollections = errors.New("failed to uninstall collections") ) -// todo добавлено в релизе v0.0.16: временный флаг для установки метадаты во все коллекции расширений -const ( - _alwaysSetSchema = true -) - type CollectionsOption func(c *CollectionConfig) type UpdateCollectionFn func(s *Setup, exist, new *collections.Collection) (coll *collections.Collection, upd bool, setSchema bool, err error) type DeleteCollectionFn func(s *Setup, col *collections.Collection) (bool, error) @@ -90,7 +85,7 @@ func isMetadataExtensionEqual(s1, s2 *schema.Schema) bool { func DefaultUpdateCollectionStrategy() CollectionsOption { return func(c *CollectionConfig) { c.UpdateFn = func(s *Setup, exist, collection *collections.Collection) (*collections.Collection, bool, bool, error) { - if !_alwaysSetSchema && !s.IsForce() && !collection.IsView() && !exist.IsView() && !isMetadataExtensionEqual(collection.Schema, exist.Schema) { + if !s.IsForce() && !collection.IsView() && !exist.IsView() && !isMetadataExtensionEqual(collection.Schema, exist.Schema) { return nil, false, false, errors.WithDetailf(collections.ErrAlreadyExists, "Коллекция с идентификатором '%s' "+ "уже существует. Удалите ее или вызовите установку расширения с флагом Force", collection.ID) } @@ -107,7 +102,7 @@ func DefaultUpdateCollectionStrategy() CollectionsOption { update = update && *exist.View == *collection.View } - setSchema = !collection.IsView() && (_alwaysSetSchema || !reflect.DeepEqual(exist.Schema, collection.Schema)) + setSchema = !collection.IsView() && !reflect.DeepEqual(exist.Schema, collection.Schema) return collection, update, setSchema, nil } diff --git a/pkg/setup/collection_test.go b/pkg/setup/collection_test.go index 5edb94e1..78f414db 100644 --- a/pkg/setup/collection_test.go +++ b/pkg/setup/collection_test.go @@ -122,18 +122,17 @@ func TestSetup_InstallCollections(t *testing.T) { assert.NoError(t, err) }, }, - //todo после удаления флага _alwaysSetSchema данный тест будет работать, сейчас он будет всегда падать, поэтому пока закомментирован - //{ - //name: "Fail to update user collection with same id as in extensions collection", - //collections: []*collections.Collection{{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata(extension.ExtensionMetadataKey, "test-extension")}}, - //collectionsCall: func(svc *mockscollections.Collections) { - // svc.On("Get", mock.Anything, "sp", "env", "1").Return(&collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String())}, nil).Once() - //}, - //wantErr: func(t *testing.T, err error) { - // assert.Error(t, err) - // assert.ErrorIs(t, err, collections.ErrAlreadyExists) - //}, - //}, + { + name: "Fail to update user collection with same id as in extensions collection", + collections: []*collections.Collection{{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata(extension.ExtensionMetadataKey, "test-extension")}}, + collectionsCall: func(svc *mockscollections.Collections) { + svc.On("Get", mock.Anything, "sp", "env", "1").Return(&collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String())}, nil).Once() + }, + wantErr: func(t *testing.T, err error) { + assert.Error(t, err) + assert.ErrorIs(t, err, collections.ErrAlreadyExists) + }, + }, { name: "Update user collection with same id as in extensions collection with force", collections: []*collections.Collection{{ID: "1", SpaceID: "sp", EnvID: "env", Schema: schema.New("name", field.String()).WithMetadata(extension.ExtensionMetadataKey, "test-extension")}}, diff --git a/pkg/setup/setup_test.go b/pkg/setup/setup_test.go index a4084a17..044d8294 100644 --- a/pkg/setup/setup_test.go +++ b/pkg/setup/setup_test.go @@ -178,16 +178,10 @@ func TestSetupInstall(t *testing.T) { t.Run("Success, update existing records", func(t *testing.T) { envMocks := &environmentMock.Environments{} - //todo после удаления флага _alwaysSetSchema убрать лишний вызов - envMocks.On("Migrate", mock.Anything, spaceID, envID). - Return(nil).Once() - collsMock := &collectionMock.Collections{} collsMock.On("Get", mock.Anything, spaceID, envID, "coll1"). Return(&collections.Collection{ID: "coll1", SpaceID: spaceID, EnvID: envID, Schema: schema.New(), Name: "Коллекция старая"}, nil).Once() collsMock.On("Update", mock.Anything, &collections.Collection{ID: "coll1", SpaceID: spaceID, EnvID: envID, Schema: schema.New(), Name: "Коллекция"}).Return(nil).Once() - //todo после удаления флага _alwaysSetSchema убрать лишний вызов - collsMock.On("SetSchema", mock.Anything, "sp", "env", "coll1", schema.New()).Return(nil).Once() rMock := &rolesMock.Roles{} for _, role := range getRoles() { @@ -244,17 +238,10 @@ func TestSetupInstall(t *testing.T) { }) t.Run("Success, with force", func(t *testing.T) { - //todo после удаления флага _alwaysSetSchema убрать лишний вызов - envMocks := &environmentMock.Environments{} - envMocks.On("Migrate", mock.Anything, spaceID, envID). - Return(nil).Once() - collsMock := &collectionMock.Collections{} collsMock.On("Get", mock.Anything, spaceID, envID, "coll1"). Return(&collections.Collection{ID: "coll1", SpaceID: spaceID, EnvID: envID, Schema: schema.New(), Name: "Коллекция старая"}, nil).Once() collsMock.On("Update", mock.Anything, &collections.Collection{ID: "coll1", SpaceID: spaceID, EnvID: envID, Schema: schema.New(), Name: "Коллекция"}).Return(nil).Once() - //todo после удаления флага _alwaysSetSchema убрать лишний вызов - collsMock.On("SetSchema", mock.Anything, "sp", "env", "coll1", schema.New()).Return(nil).Once() rMock := &rolesMock.Roles{} for _, role := range getRoles() { @@ -289,8 +276,6 @@ func TestSetupInstall(t *testing.T) { Clients: clMock, Roles: rMock, Items: itmMock, - //todo после удаления флага _alwaysSetSchema убрать - Environments: envMocks, }, t) setup = setup.WithForce(true) -- GitLab