From 9d00bb08962e26b0c284bcfc5e7ed52cf141d5c6 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Tue, 14 Apr 2015 23:22:14 +0200 Subject: Import Google Code issue assignee when mapped. --- lib/gitlab/google_code_import/importer.rb | 14 ++++++++++++++ spec/fixtures/GoogleCodeProjectHosting.json | 5 +++++ spec/lib/gitlab/google_code_import/importer_spec.rb | 10 +++++++--- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/lib/gitlab/google_code_import/importer.rb b/lib/gitlab/google_code_import/importer.rb index 3b506efddcf..777472cf3c5 100644 --- a/lib/gitlab/google_code_import/importer.rb +++ b/lib/gitlab/google_code_import/importer.rb @@ -99,10 +99,24 @@ module Gitlab end labels << nice_status_name(raw_issue["status"]) + assignee_id = nil + if raw_issue.has_key?("owner") + username = user_map[raw_issue["owner"]["name"]] + + if username.start_with?("@") + username = username[1..-1] + + if user = User.find_by(username: username) + assignee_id = user.id + end + end + end + issue = project.issues.create!( title: raw_issue["title"], description: body, author_id: project.creator_id, + assignee_id: assignee_id, state: raw_issue["state"] == "closed" ? "closed" : "opened" ) issue.add_labels_by_names(labels) diff --git a/spec/fixtures/GoogleCodeProjectHosting.json b/spec/fixtures/GoogleCodeProjectHosting.json index 85e354f8d0f..d05e77271ae 100644 --- a/spec/fixtures/GoogleCodeProjectHosting.json +++ b/spec/fixtures/GoogleCodeProjectHosting.json @@ -344,6 +344,11 @@ "name" : "schattenpr...", "htmlLink" : "https://code.google.com/u/106498139506637530000/" }, + "owner" : { + "kind" : "projecthosting#issuePerson", + "name" : "thilo...", + "htmlLink" : "https://code.google.com/u/104224918623172014000/" + }, "updated" : "2009-11-18T05:14:58.000Z", "published" : "2009-11-18T00:20:19.000Z", "closed" : "2009-11-18T05:14:58.000Z", diff --git a/spec/lib/gitlab/google_code_import/importer_spec.rb b/spec/lib/gitlab/google_code_import/importer_spec.rb index a68f69d337c..107ba49962a 100644 --- a/spec/lib/gitlab/google_code_import/importer_spec.rb +++ b/spec/lib/gitlab/google_code_import/importer_spec.rb @@ -1,20 +1,22 @@ require "spec_helper" describe Gitlab::GoogleCodeImport::Importer do + let(:mapped_user) { create(:user, username: "thilo123") } let(:raw_data) { JSON.parse(File.read(Rails.root.join("spec/fixtures/GoogleCodeProjectHosting.json"))) } let(:client) { Gitlab::GoogleCodeImport::Client.new(raw_data) } let(:import_data) { { "repo" => client.repo("tint2").raw_data, "user_map" => { - "thilo..." => "@thilo123" + "thilo..." => "@#{mapped_user.username}" } } } let(:project) { create(:project, import_data: import_data) } - subject { described_class.new(project) } + subject { described_class.new(project) } describe "#execute" do + it "imports status labels" do subject.execute @@ -43,6 +45,8 @@ describe Gitlab::GoogleCodeImport::Importer do issue = project.issues.first expect(issue).to_not be_nil expect(issue.iid).to eq(169) + expect(issue.author).to eq(project.creator) + expect(issue.assignee).to eq(mapped_user) expect(issue.state).to eq("closed") expect(issue.label_names).to include("Priority: Medium") expect(issue.label_names).to include("Status: Fixed") @@ -65,7 +69,7 @@ describe Gitlab::GoogleCodeImport::Importer do note = project.issues.first.notes.first expect(note).to_not be_nil expect(note.note).to include("Comment 1") - expect(note.note).to include("@thilo123") + expect(note.note).to include("@#{mapped_user.username}") expect(note.note).to include("November 18, 2009 05:14") expect(note.note).to include("applied, thanks.") expect(note.note).to include("Status: Fixed") -- cgit v1.2.1