diff --git a/pkg/setup/collection.go b/pkg/setup/collection.go index d61ba14d18f2d8bc93d2a535392b8b608ba6e2d0..11274063f34d35e095380d27c94387f242339160 100644 --- a/pkg/setup/collection.go +++ b/pkg/setup/collection.go @@ -113,7 +113,7 @@ func (s *Setup) InstallCollections(ctx context.Context) (err error) { zap.Error(err), ) - return errors.WithErrors(ErrInstallCollections, err) + return errors.WithDetail(errors.Wrap(err, "migrate"), "Возникла ошибка при миграции данных") } } diff --git a/pkg/setup/collection_test.go b/pkg/setup/collection_test.go index 433aa7397d450f8226a95af032a7cd177697fbed..313b04bb3e272b3ee0181a38da41f0cd1106ca30 100644 --- a/pkg/setup/collection_test.go +++ b/pkg/setup/collection_test.go @@ -91,6 +91,23 @@ func TestSetup_InstallCollections(t *testing.T) { assert.Contains(t, errors.GetDetail(err), "Возникла ошибка при настройке коллекции space(1)") }, }, + { + name: "Fail to install collection on migrate", + collections: []*collections.Collection{{ID: "1", SpaceID: "sp", Name: "space", EnvID: "env", Schema: schema.New("name", field.String())}}, + 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", Schema: schema.New("name", field.String())}).Return(&collections.Collection{ID: "1", SpaceID: "sp", Name: "space", EnvID: "env", Schema: schema.New("name", field.String())}, nil).Once() + svc.On("SetSchema", mock.Anything, "sp", "env", "1", schema.New("name", field.String())).Return(nil).Once() + }, + envsCall: func(svc *envmocks.Environments) { + svc.On("Migrate", mock.Anything, "sp", "env", &environments.MigrateOptions{Wait: true}).Return(errors.New("migrate error")).Once() + }, + wantErr: func(t *testing.T, err error) { + assert.Error(t, err) + assert.EqualError(t, err, "migrate: migrate error") + assert.Contains(t, errors.GetDetail(err), "Возникла ошибка при миграции данных") + }, + }, } for _, tt := range tests { diff --git a/pkg/setup/setup_test.go b/pkg/setup/setup_test.go index 162c5188bed62bcedc0be8afcfc462962ed43e86..72773e29fa9faeb7c474d270081aee54e3dd03b7 100644 --- a/pkg/setup/setup_test.go +++ b/pkg/setup/setup_test.go @@ -608,7 +608,7 @@ func TestSetupInstall(t *testing.T) { err := setup.Install(context.Background()) require.Error(t, err) - assert.ErrorContains(t, err, "failed to install collection") + assert.ErrorContains(t, err, "migrate: can't migrate") rMock.AssertExpectations(t) collsMock.AssertExpectations(t)