summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-02-27 10:47:37 +0100
committerDouwe Maan <douwe@gitlab.com>2015-02-27 10:49:47 +0100
commit804a2488cfd6704726c0dc7e6b0facc7e2ff7ce3 (patch)
treecf432ae175d011e4f02a67cb70abcdfb0c81fa2d
parent47c5a2ab22b0fbc9c20b996ec24c27608e99bc43 (diff)
downloadgitlab-ce-804a2488cfd6704726c0dc7e6b0facc7e2ff7ce3.tar.gz
Fix and test User#contributed_projects_ids.
-rw-r--r--app/models/user.rb1
-rw-r--r--spec/models/user_spec.rb28
2 files changed, 29 insertions, 0 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index 27ac93f4841..55768a351e3 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -629,5 +629,6 @@ class User < ActiveRecord::Base
reorder(project_id: :desc).
select(:project_id).
uniq
+ .map(&:project_id)
end
end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index c015a1d2687..29d0c24e87e 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -505,4 +505,32 @@ describe User do
expect(User.sort(nil).first).to eq(@user)
end
end
+
+ describe "#contributed_projects_ids" do
+
+ subject { create(:user) }
+ let!(:project1) { create(:project) }
+ let!(:project2) { create(:project, forked_from_project: project3) }
+ let!(:project3) { create(:project) }
+ let!(:merge_request) { create(:merge_request, source_project: project2, target_project: project3, author: subject) }
+ let!(:push_event) { create(:event, action: Event::PUSHED, project: project1, target: project1, author: subject) }
+ let!(:merge_event) { create(:event, action: Event::CREATED, project: project3, target: merge_request, author: subject) }
+
+ before do
+ project1.team << [subject, :master]
+ project2.team << [subject, :master]
+ end
+
+ it "includes IDs for projects the user has pushed to" do
+ expect(subject.contributed_projects_ids).to include(project1.id)
+ end
+
+ it "includes IDs for projects the user has had merge requests merged into" do
+ expect(subject.contributed_projects_ids).to include(project3.id)
+ end
+
+ it "doesn't include IDs for unrelated projects" do
+ expect(subject.contributed_projects_ids).not_to include(project2.id)
+ end
+ end
end