diff options
Diffstat (limited to 'lib/gitlab/jira_import/issue_serializer.rb')
-rw-r--r-- | lib/gitlab/jira_import/issue_serializer.rb | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/lib/gitlab/jira_import/issue_serializer.rb b/lib/gitlab/jira_import/issue_serializer.rb index f00852a21a2..0be5d22065a 100644 --- a/lib/gitlab/jira_import/issue_serializer.rb +++ b/lib/gitlab/jira_import/issue_serializer.rb @@ -3,12 +3,50 @@ module Gitlab module JiraImport class IssueSerializer + attr_reader :jira_issue, :project, :params, :formatter + def initialize(project, jira_issue, params = {}) + @jira_issue = jira_issue + @project = project + @params = params + @formatter = Gitlab::ImportFormatter.new end def execute - # this is going to be implemented in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27201 - {} + { + iid: params[:iid], + project_id: project.id, + description: description, + title: title, + state_id: map_status(jira_issue.status.statusCategory), + updated_at: jira_issue.updated, + created_at: jira_issue.created, + author_id: project.creator_id # TODO: map actual author: https://gitlab.com/gitlab-org/gitlab/-/issues/210580 + } + end + + private + + def title + "[#{jira_issue.key}] #{jira_issue.summary}" + end + + def description + body = [] + body << formatter.author_line(jira_issue.reporter.displayName) + body << formatter.assignee_line(jira_issue.assignee.displayName) if jira_issue.assignee + body << jira_issue.description + + body.join + end + + def map_status(jira_status_category) + case jira_status_category["key"].downcase + when 'done' + Issuable::STATE_ID_MAP[:closed] + else + Issuable::STATE_ID_MAP[:opened] + end end end end |