Files
atlantis/server/events/vcs/pull_status_fetcher.go
Michel Z. Santello df0d58d29b fix: vcs-status-name hardcoded in PullIsMergeable function (#2312)
* feat: add userConfig.VCSStatusName to applyCommandRunner context

* fix: use vcsstatusname from context

* chore: normalize tests

* chore: update interface mock
2022-06-16 09:26:20 -07:00

38 lines
1.1 KiB
Go

package vcs
import (
"github.com/pkg/errors"
"github.com/runatlantis/atlantis/server/events/models"
)
type PullReqStatusFetcher interface {
FetchPullStatus(repo models.Repo, pull models.PullRequest, vcsstatusname string) (models.PullReqStatus, error)
}
type pullReqStatusFetcher struct {
client Client
}
func NewPullReqStatusFetcher(client Client) PullReqStatusFetcher {
return &pullReqStatusFetcher{
client: client,
}
}
func (f *pullReqStatusFetcher) FetchPullStatus(repo models.Repo, pull models.PullRequest, vcsstatusname string) (pullStatus models.PullReqStatus, err error) {
approvalStatus, err := f.client.PullIsApproved(repo, pull)
if err != nil {
return pullStatus, errors.Wrapf(err, "fetching pull approval status for repo: %s, and pull number: %d", repo.FullName, pull.Num)
}
mergeable, err := f.client.PullIsMergeable(repo, pull, vcsstatusname)
if err != nil {
return pullStatus, errors.Wrapf(err, "fetching mergeability status for repo: %s, and pull number: %d", repo.FullName, pull.Num)
}
return models.PullReqStatus{
ApprovalStatus: approvalStatus,
Mergeable: mergeable,
}, err
}