diff --git a/pkg/setup/collection.go b/pkg/setup/collection.go index cee9d6203091efdb18f4d484efd8be4eb093a7da..8ef06942274800749bf1de0f81f28e52241670de 100644 --- a/pkg/setup/collection.go +++ b/pkg/setup/collection.go @@ -185,7 +185,8 @@ func (s *Setup) InstallCollection(ctx context.Context, c CollectionConfig) (setS } } - if setSchema { + // todo убрать !collection.IsView() после удаления константы _alwaysSetSchema + if setSchema && !collection.IsView() { err = s.content.Collections.SetSchema(ctx, collection.SpaceID, collection.EnvID, collection.ID, collection.Schema) if err != nil { return false, err diff --git a/pkg/setup/collection_test.go b/pkg/setup/collection_test.go index f62ba3b42a752f5b0b43680966d42037b5d56378..20867b2d13fc031875a5627dabca8f06c0830106 100644 --- a/pkg/setup/collection_test.go +++ b/pkg/setup/collection_test.go @@ -49,6 +49,20 @@ func TestSetup_InstallCollections(t *testing.T) { assert.NoError(t, err) }, }, + { + name: "Install one view collection success", + collections: []*collections.Collection{{ID: "1", SpaceID: "sp", Name: "space", EnvID: "env", View: &collections.View{SpaceID: "sp", EnvID: "env", CollectionID: "3"}}}, + collectionsCall: func(svc *mockscollections.Collections) { + svc.On("Get", mock.Anything, "sp", "env", "1").Return(nil, errors.New("not found")).Once() + svc.On("Create", mock.Anything, &collections.Collection{ID: "1", SpaceID: "sp", Name: "space", EnvID: "env", View: &collections.View{SpaceID: "sp", EnvID: "env", CollectionID: "3"}}).Return(&collections.Collection{ID: "1", SpaceID: "sp", Name: "space", EnvID: "env", View: &collections.View{SpaceID: "sp", EnvID: "env", CollectionID: "3"}}, 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) + }, + }, { name: "Install one collection fails", collections: []*collections.Collection{{ID: "1", SpaceID: "sp", Name: "space", EnvID: "env", Schema: schema.New("name", field.String())}}, @@ -152,20 +166,20 @@ func TestSetup_InstallCollections(t *testing.T) { }, }, //todo после удаления флага _alwaysSetSchema данный тест будет работать, сейчас он будет всегда падать, поэтому пока закомментирован - //{ - // 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) - // }, - //}, + { + 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) + }, + }, { name: "Fail to install collection on migrate", collections: []*collections.Collection{{ID: "1", SpaceID: "sp", Name: "space", EnvID: "env", Schema: schema.New("name", field.String())}},