package resolver import ( "context" "testing" "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" "edge-infra.dev/pkg/edge/api/graph/model" "edge-infra.dev/pkg/edge/api/mocks" ) func TestAddArtifactCompatibility(t *testing.T) { mock := gomock.NewController(t) compatibilityService := mocks.NewMockCompatibilityService(mock) compatibilityService.EXPECT().GetArtifactVersionCompatibility(context.Background(), gomock.Any(), nil). Return(&model.ArtifactCompatibility{}, nil).AnyTimes() compatibilityService.EXPECT().AddArtifactCompatibility(context.Background(), gomock.Any()). Return(true, nil).Times(1) artInput := artifactCompatiblityInput() response, err := compatibilityService.AddArtifactCompatibility(context.Background(), *artInput) assert.NoError(t, err) assert.NotNil(t, response) } func TestDeleteArtifactCompatibility(t *testing.T) { mock := gomock.NewController(t) compatibilityService := mocks.NewMockCompatibilityService(mock) compatibilityService.EXPECT().GetArtifactVersionCompatibility(context.Background(), gomock.Any(), nil). Return(&model.ArtifactCompatibility{}, nil).AnyTimes() compatibilityService.EXPECT().DeleteArtifactCompatibility(context.Background(), gomock.Any()). Return(true, nil).Times(1) artInput := artifactCompatiblityInput() response, err := compatibilityService.DeleteArtifactCompatibility(context.Background(), *artInput) assert.NoError(t, err) assert.NotNil(t, response) } func TestGetArtifactVersionCompatibility(t *testing.T) { mock := gomock.NewController(t) compatibilityService := mocks.NewMockCompatibilityService(mock) compatibilityService.EXPECT().GetArtifactVersionCompatibility(context.Background(), gomock.Any(), nil). Return(&model.ArtifactCompatibility{}, nil).AnyTimes() compatibilityService.EXPECT().IsCompatible(context.Background(), gomock.Any(), gomock.Any()). Return(true, nil).AnyTimes() artInput := artifactCompatiblityInput() response, err := compatibilityService.GetArtifactVersionCompatibility(context.Background(), model.ArtifactVersion{Name: artInput.Artifact.Name, Version: artInput.Artifact.Version}, nil) assert.NoError(t, err) assert.NotNil(t, response) } func TestCheckVersionSupport(t *testing.T) { mock := gomock.NewController(t) compatibilityService := mocks.NewMockCompatibilityService(mock) compatibilityService.EXPECT().GetArtifactVersionCompatibility(context.Background(), gomock.Any(), nil). Return(&model.ArtifactCompatibility{}, nil).AnyTimes() compatibilityService.EXPECT().IsCompatible(context.Background(), gomock.Any(), gomock.Any()). Return(true, nil).AnyTimes() artInput := artifactCompatiblityInput() response, err := compatibilityService.IsCompatible(context.Background(), model.ArtifactVersion{Name: artInput.Artifact.Name, Version: artInput.Artifact.Version}, model.ArtifactVersion{Name: artInput.CompatibleArtifacts[0].Name, Version: artInput.CompatibleArtifacts[0].Version}) assert.NoError(t, err) assert.NotNil(t, response) } func artifactCompatiblityInput() *model.ArtifactCompatibilityPayload { defaultBwc := 1 return &model.ArtifactCompatibilityPayload{ Artifact: &model.ArtifactInput{ Name: "test-artifact", Version: "1.10", }, NthIndex: &defaultBwc, CompatibleArtifacts: []*model.ArtifactInput{ { Name: "compatible-Artifact1", Version: "1", }, { Name: "compatible-Artifact1", Version: "2", }, }, } }