diff --git a/pkg/setup/collection_test.go b/pkg/setup/collection_test.go index 2b9f8e4cd5f0586be91bdd8d6d329d244d53ed23..027c13b9ea51c566076cc8c5fa9a3f31814f4273 100644 --- a/pkg/setup/collection_test.go +++ b/pkg/setup/collection_test.go @@ -23,6 +23,7 @@ func TestSetup_InstallCollections(t *testing.T) { collectionsCall func(svc *mockscollections.Collections) envsCall func(svc *envmocks.Environments) co CollectionsOption + force bool wantErr func(t *testing.T, err error) }{ { @@ -119,6 +120,23 @@ func TestSetup_InstallCollections(t *testing.T) { }, co: SetSchemaMetadata(map[string]string{"extension": "test-extension"}), }, + { + name: "Update collection with the same id, with force", + 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", Schema: schema.New("name", field.String()).WithMetadata("extension", "test-extension")}, 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())).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(map[string]string{"extension": "test-extension"}), + force: true, + }, } for _, tt := range tests { @@ -133,6 +151,7 @@ func TestSetup_InstallCollections(t *testing.T) { } s := NewSetup(&content.Content{Collections: c, Environments: e}, "sp", "env", nil) + s.force = tt.force if tt.co != nil { s.AddCollections(tt.collections, tt.co) } else {