43 lines
1.2 KiB
Ruby
43 lines
1.2 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Atlassian
|
||
|
module JiraConnect
|
||
|
module Serializers
|
||
|
class PullRequestEntity < BaseEntity
|
||
|
STATUS_MAPPING = {
|
||
|
'opened' => 'OPEN',
|
||
|
'locked' => 'OPEN',
|
||
|
'merged' => 'MERGED',
|
||
|
'closed' => 'DECLINED'
|
||
|
}.freeze
|
||
|
|
||
|
expose :id, format_with: :string
|
||
|
expose :issueKeys do |mr|
|
||
|
JiraIssueKeyExtractor.new(mr.title, mr.description).issue_keys
|
||
|
end
|
||
|
expose :displayId do |mr|
|
||
|
mr.to_reference(full: true)
|
||
|
end
|
||
|
expose :title
|
||
|
expose :author, using: JiraConnect::Serializers::AuthorEntity
|
||
|
expose :user_notes_count, as: :commentCount
|
||
|
expose :source_branch, as: :sourceBranch
|
||
|
expose :target_branch, as: :destinationBranch
|
||
|
expose :lastUpdate do |mr|
|
||
|
mr.last_edited_at || mr.created_at
|
||
|
end
|
||
|
expose :status do |mr|
|
||
|
STATUS_MAPPING[mr.state] || 'UNKNOWN'
|
||
|
end
|
||
|
|
||
|
expose :sourceBranchUrl do |mr|
|
||
|
project_commits_url(mr.project, mr.source_branch)
|
||
|
end
|
||
|
expose :url do |mr|
|
||
|
merge_request_url(mr)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|