Files
atlantis/server/jobs/job_url_setter_test.go
Ken Kaizu 3954955e13 fix(deps): update module github.com/petergtz/pegomock/v3 to v4 (#3534)
* fix(deps): update module github.com/petergtz/pegomock/v3 to v4 in go.mod

* remove pegomock generate m option, which is not support after v4

* make regen-mocks

* replace pegomock v4 primitive eq/matchers

* convert pegomock v4 Eq/Any matchers

* remove custom models.Repo matcher

* pegomock v4 cannot use result method args

ref https://github.com/petergtz/pegomock/issues/123

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-20 15:05:23 -04:00

46 lines
1.9 KiB
Go

package jobs_test
import (
"errors"
"testing"
. "github.com/petergtz/pegomock/v4"
"github.com/runatlantis/atlantis/server/events/command"
"github.com/runatlantis/atlantis/server/events/models"
"github.com/runatlantis/atlantis/server/jobs"
"github.com/runatlantis/atlantis/server/jobs/mocks"
. "github.com/runatlantis/atlantis/testing"
"github.com/stretchr/testify/assert"
)
func TestJobURLSetter(t *testing.T) {
ctx := createTestProjectCmdContext(t)
t.Run("update project status with project jobs url", func(t *testing.T) {
RegisterMockTestingT(t)
projectStatusUpdater := mocks.NewMockProjectStatusUpdater()
projectJobURLGenerator := mocks.NewMockProjectJobURLGenerator()
url := "url-to-project-jobs"
jobURLSetter := jobs.NewJobURLSetter(projectJobURLGenerator, projectStatusUpdater)
result := &command.ProjectResult{}
When(projectJobURLGenerator.GenerateProjectJobURL(Eq[command.ProjectContext](ctx))).ThenReturn(url, nil)
When(projectStatusUpdater.UpdateProject(ctx, command.Plan, models.PendingCommitStatus, url, nil)).ThenReturn(nil)
err := jobURLSetter.SetJobURLWithStatus(ctx, command.Plan, models.PendingCommitStatus, result)
Ok(t, err)
projectStatusUpdater.VerifyWasCalledOnce().UpdateProject(ctx, command.Plan, models.PendingCommitStatus, "url-to-project-jobs", result)
})
t.Run("update project status with project jobs url error", func(t *testing.T) {
RegisterMockTestingT(t)
projectStatusUpdater := mocks.NewMockProjectStatusUpdater()
projectJobURLGenerator := mocks.NewMockProjectJobURLGenerator()
jobURLSetter := jobs.NewJobURLSetter(projectJobURLGenerator, projectStatusUpdater)
When(projectJobURLGenerator.GenerateProjectJobURL(Eq[command.ProjectContext](ctx))).ThenReturn("url-to-project-jobs", errors.New("some error"))
err := jobURLSetter.SetJobURLWithStatus(ctx, command.Plan, models.PendingCommitStatus, nil)
assert.Error(t, err)
})
}