Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben Davila <rdavila84@gmail.com>2017-05-02 21:20:41 +0300
committerRuben Davila <rdavila84@gmail.com>2017-05-02 21:20:41 +0300
commitbbfbcebdf69261bac6aa142f430719955e8e86b9 (patch)
tree25916a1a761cb6c8fcdac4b20b76017a7f4506d3 /spec/lib/gitlab/issuable_sorter_spec.rb
parent3b82444eb7791e58e3e0ba2f08b8ccde48e3d4c6 (diff)
parent920d55b9f8afd35e16351fb57d671acf66092e89 (diff)
Merge branch 'master' into 28433-internationalise-cycle-analytics-page
Diffstat (limited to 'spec/lib/gitlab/issuable_sorter_spec.rb')
-rw-r--r--spec/lib/gitlab/issuable_sorter_spec.rb62
1 files changed, 62 insertions, 0 deletions
diff --git a/spec/lib/gitlab/issuable_sorter_spec.rb b/spec/lib/gitlab/issuable_sorter_spec.rb
new file mode 100644
index 00000000000..c9a434b2bcf
--- /dev/null
+++ b/spec/lib/gitlab/issuable_sorter_spec.rb
@@ -0,0 +1,62 @@
+require 'spec_helper'
+
+describe Gitlab::IssuableSorter, lib: true do
+ let(:namespace1) { build(:namespace, id: 1) }
+ let(:project1) { build(:project, id: 1, namespace: namespace1) }
+
+ let(:project2) { build(:project, id: 2, path: "a", namespace: project1.namespace) }
+ let(:project3) { build(:project, id: 3, path: "b", namespace: project1.namespace) }
+
+ let(:namespace2) { build(:namespace, id: 2, path: "a") }
+ let(:namespace3) { build(:namespace, id: 3, path: "b") }
+ let(:project4) { build(:project, id: 4, path: "a", namespace: namespace2) }
+ let(:project5) { build(:project, id: 5, path: "b", namespace: namespace2) }
+ let(:project6) { build(:project, id: 6, path: "a", namespace: namespace3) }
+
+ let(:unsorted) { [sorted[2], sorted[3], sorted[0], sorted[1]] }
+
+ let(:sorted) do
+ [build(:issue, iid: 1, project: project1),
+ build(:issue, iid: 2, project: project1),
+ build(:issue, iid: 10, project: project1),
+ build(:issue, iid: 20, project: project1)]
+ end
+
+ it 'sorts references by a given key' do
+ expect(described_class.sort(project1, unsorted)).to eq(sorted)
+ end
+
+ context 'for JIRA issues' do
+ let(:sorted) do
+ [ExternalIssue.new('JIRA-1', project1),
+ ExternalIssue.new('JIRA-2', project1),
+ ExternalIssue.new('JIRA-10', project1),
+ ExternalIssue.new('JIRA-20', project1)]
+ end
+
+ it 'sorts references by a given key' do
+ expect(described_class.sort(project1, unsorted)).to eq(sorted)
+ end
+ end
+
+ context 'for references from multiple projects and namespaces' do
+ let(:sorted) do
+ [build(:issue, iid: 1, project: project1),
+ build(:issue, iid: 2, project: project1),
+ build(:issue, iid: 10, project: project1),
+ build(:issue, iid: 1, project: project2),
+ build(:issue, iid: 1, project: project3),
+ build(:issue, iid: 1, project: project4),
+ build(:issue, iid: 1, project: project5),
+ build(:issue, iid: 1, project: project6)]
+ end
+ let(:unsorted) do
+ [sorted[3], sorted[1], sorted[4], sorted[2],
+ sorted[6], sorted[5], sorted[0], sorted[7]]
+ end
+
+ it 'sorts references by project and then by a given key' do
+ expect(subject.sort(project1, unsorted)).to eq(sorted)
+ end
+ end
+end