summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <robert@gitlab.com>2016-04-01 16:32:00 +0000
committerRobert Speicher <robert@gitlab.com>2016-04-01 16:32:00 +0000
commit64106865dfc0c8af169b01c702099c381fc17f23 (patch)
treebff27b5f3a510778abf35c4807ef56b0d9c29ffa
parenta4f55888df246a36f9aac0b433f64978d540d188 (diff)
parentc2d5cc91c00654e1a0a0d01271022059c803d674 (diff)
downloadgitlab-ce-64106865dfc0c8af169b01c702099c381fc17f23.tar.gz
Merge branch 'fix/fogbugz-import' into 'master'
spec and fix for fogbugz lonely user problem Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/14766 I encountered this issue while manually testing all import types for https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/3066 This is really due to a horrible API ``` { 'people' => { 'person' => array_of_people_or_single_person_as_hash } } ``` See merge request !3457
-rw-r--r--lib/gitlab/fogbugz_import/client.rb2
-rw-r--r--spec/lib/gitlab/fogbugz_import/client_spec.rb24
2 files changed, 25 insertions, 1 deletions
diff --git a/lib/gitlab/fogbugz_import/client.rb b/lib/gitlab/fogbugz_import/client.rb
index 431d50882fd..2152182b37f 100644
--- a/lib/gitlab/fogbugz_import/client.rb
+++ b/lib/gitlab/fogbugz_import/client.rb
@@ -26,7 +26,7 @@ module Gitlab
def user_map
users = {}
res = @api.command(:listPeople)
- res['people']['person'].each do |user|
+ [res['people']['person']].flatten.each do |user|
users[user['ixPerson']] = { name: user['sFullName'], email: user['sEmail'] }
end
users
diff --git a/spec/lib/gitlab/fogbugz_import/client_spec.rb b/spec/lib/gitlab/fogbugz_import/client_spec.rb
new file mode 100644
index 00000000000..2dc71be0254
--- /dev/null
+++ b/spec/lib/gitlab/fogbugz_import/client_spec.rb
@@ -0,0 +1,24 @@
+require 'spec_helper'
+
+describe Gitlab::FogbugzImport::Client, lib: true do
+
+ let(:client) { described_class.new(uri: '', token: '') }
+ let(:one_user) { { 'people' => { 'person' => { "ixPerson" => "2", "sFullName" => "James" } } } }
+ let(:two_users) { { 'people' => { 'person' => [one_user, { "ixPerson" => "3" }] } } }
+
+ it 'retrieves user_map with one user' do
+ stub_api(one_user)
+
+ expect(client.user_map.count).to eq(1)
+ end
+
+ it 'retrieves user_map with two users' do
+ stub_api(two_users)
+
+ expect(client.user_map.count).to eq(2)
+ end
+
+ def stub_api(users)
+ allow_any_instance_of(::Fogbugz::Interface).to receive(:command).with(:listPeople).and_return(users)
+ end
+end