summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Artur <felipefac@gmail.com>2017-06-09 12:54:20 -0300
committerFelipe Artur <felipefac@gmail.com>2017-06-09 15:30:09 -0300
commitef1157c1a48236f2afbe39a3454f0aaec4fada9c (patch)
treecf3410e4346e32006ab677e57c16d599e55bff1c
parent27272dcfccaf9a7358743b4b7dc6b3bce3ba37fc (diff)
downloadgitlab-ce-ef1157c1a48236f2afbe39a3454f0aaec4fada9c.tar.gz
Remove old specs and add new ones
-rw-r--r--app/controllers/concerns/milestone_actions.rb2
-rw-r--r--app/models/concerns/milestoneish.rb8
-rw-r--r--locale/bg/gitlab.pobin10396 -> 21539 bytes
-rw-r--r--locale/gitlab.pot4
-rw-r--r--locale/pt_BR/gitlab.pobin8031 -> 19026 bytes
-rw-r--r--spec/features/dashboard/milestone_tabs_spec.rb2
-rw-r--r--spec/features/milestones/milestones_spec.rb101
-rw-r--r--spec/models/concerns/milestoneish_spec.rb35
-rw-r--r--spec/models/group_milestone_spec.rb1
-rw-r--r--spec/models/milestone_spec.rb29
10 files changed, 46 insertions, 136 deletions
diff --git a/app/controllers/concerns/milestone_actions.rb b/app/controllers/concerns/milestone_actions.rb
index 4bda26fdfd1..1ff785ac2ca 100644
--- a/app/controllers/concerns/milestone_actions.rb
+++ b/app/controllers/concerns/milestone_actions.rb
@@ -6,7 +6,7 @@ module MilestoneActions
format.html { redirect_to milestone_redirect_path }
format.json do
render json: tabs_json("shared/milestones/_merge_requests_tab", {
- merge_requests: @milestone.merge_requests.sort('priority'),
+ merge_requests: @milestone.sorted_merge_requests,
show_project_name: true
})
end
diff --git a/app/models/concerns/milestoneish.rb b/app/models/concerns/milestoneish.rb
index a3247210314..0f4d4d841ba 100644
--- a/app/models/concerns/milestoneish.rb
+++ b/app/models/concerns/milestoneish.rb
@@ -62,12 +62,16 @@ module Milestoneish
due_date && due_date.past?
end
+ def sorted_merge_requests
+ merge_requests.sort('label_priority')
+ end
+
private
def count_issues_by_state(user)
memoize_per_user(user, :count_issues_by_state) do
# Need to group and count using ruby array to not break
- # label ordering
+ # label ordering. Also it saves a SQL query.
issues_visible_to_user(user).to_a.group_by(&:state)
end
end
@@ -81,6 +85,6 @@ module Milestoneish
# override in a class that includes this module to get a faster query
# from IssuesFinder
def issues_finder_params
- { sort: 'priority' }
+ { sort: 'label_priority' }
end
end
diff --git a/locale/bg/gitlab.po b/locale/bg/gitlab.po
index e6caf83252d..c4a5c0669a5 100644
--- a/locale/bg/gitlab.po
+++ b/locale/bg/gitlab.po
Binary files differ
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index c967b720885..24c6f176cc9 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gitlab 1.0.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-06-08 09:42+0200\n"
-"PO-Revision-Date: 2017-06-08 09:42+0200\n"
+"POT-Creation-Date: 2017-06-09 12:52-0300\n"
+"PO-Revision-Date: 2017-06-09 12:52-0300\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
diff --git a/locale/pt_BR/gitlab.po b/locale/pt_BR/gitlab.po
index 5ad41f92b64..2149cacf9e3 100644
--- a/locale/pt_BR/gitlab.po
+++ b/locale/pt_BR/gitlab.po
Binary files differ
diff --git a/spec/features/dashboard/milestone_tabs_spec.rb b/spec/features/dashboard/milestone_tabs_spec.rb
index 0c7b992c500..2c48939bf9c 100644
--- a/spec/features/dashboard/milestone_tabs_spec.rb
+++ b/spec/features/dashboard/milestone_tabs_spec.rb
@@ -23,7 +23,7 @@ describe 'Dashboard milestone tabs', :js, :feature do
it 'loads merge requests async' do
click_link 'Merge Requests'
- expect(page).to have_selector('.merge_requests-sortable-list')
+ expect(page).to have_selector('.milestone-merge_requests-list')
end
it 'loads participants async' do
diff --git a/spec/features/milestones/milestones_spec.rb b/spec/features/milestones/milestones_spec.rb
deleted file mode 100644
index 66c4a3a0602..00000000000
--- a/spec/features/milestones/milestones_spec.rb
+++ /dev/null
@@ -1,101 +0,0 @@
-# require 'rails_helper'
-
-# describe 'Milestone draggable', feature: true, js: true do
-# include DragTo
-
-# let(:milestone) { create(:milestone, project: project, title: 8.14) }
-# let(:project) { create(:empty_project, :public) }
-# let(:user) { create(:user) }
-
-# context 'issues' do
-# let(:issue) { page.find_by_id('issues-list-unassigned').find('li') }
-# let(:issue_target) { page.find_by_id('issues-list-ongoing') }
-
-# it 'does not allow guest to drag issue' do
-# create_and_drag_issue
-
-# expect(issue_target).not_to have_selector('.issuable-row')
-# end
-
-# it 'does not allow authorized user to drag issue' do
-# login_as(user)
-# create_and_drag_issue
-
-# expect(issue_target).not_to have_selector('.issuable-row')
-# end
-
-# it 'allows author to drag issue' do
-# login_as(user)
-# create_and_drag_issue(author: user)
-
-# expect(issue_target).to have_selector('.issuable-row')
-# end
-
-# it 'allows admin to drag issue' do
-# login_as(:admin)
-# create_and_drag_issue
-
-# expect(issue_target).to have_selector('.issuable-row')
-# end
-# end
-
-# context 'merge requests' do
-# let(:merge_request) { page.find_by_id('merge_requests-list-unassigned').find('li') }
-# let(:merge_request_target) { page.find_by_id('merge_requests-list-ongoing') }
-
-# it 'does not allow guest to drag merge request' do
-# create_and_drag_merge_request
-
-# expect(merge_request_target).not_to have_selector('.issuable-row')
-# end
-
-# it 'does not allow authorized user to drag merge request' do
-# login_as(user)
-# create_and_drag_merge_request
-
-# expect(merge_request_target).not_to have_selector('.issuable-row')
-# end
-
-# it 'allows author to drag merge request' do
-# login_as(user)
-# create_and_drag_merge_request(author: user)
-
-# expect(merge_request_target).to have_selector('.issuable-row')
-# end
-
-# it 'allows admin to drag merge request' do
-# login_as(:admin)
-# create_and_drag_merge_request
-
-# expect(merge_request_target).to have_selector('.issuable-row')
-# end
-# end
-
-# def create_and_drag_issue(params = {})
-# create(:issue, params.merge(title: 'Foo', project: project, milestone: milestone))
-
-# visit namespace_project_milestone_path(project.namespace, project, milestone)
-# scroll_into_view('.milestone-content')
-# drag_to(selector: '.issues-sortable-list', list_to_index: 1)
-
-# wait_for_requests
-# end
-
-# def create_and_drag_merge_request(params = {})
-# create(:merge_request, params.merge(title: 'Foo', source_project: project, target_project: project, milestone: milestone))
-
-# visit namespace_project_milestone_path(project.namespace, project, milestone)
-# page.find("a[href='#tab-merge-requests']").click
-
-# wait_for_requests
-
-# scroll_into_view('.milestone-content')
-# drag_to(selector: '.merge_requests-sortable-list', list_to_index: 1)
-
-# wait_for_requests
-# end
-
-# def scroll_into_view(selector)
-# page.evaluate_script("document.querySelector('#{selector}').scrollIntoView();")
-# end
-# end
diff --git a/spec/models/concerns/milestoneish_spec.rb b/spec/models/concerns/milestoneish_spec.rb
index 675b730c557..7616123b486 100644
--- a/spec/models/concerns/milestoneish_spec.rb
+++ b/spec/models/concerns/milestoneish_spec.rb
@@ -19,12 +19,47 @@ describe Milestone, 'Milestoneish' do
let!(:closed_security_issue_3) { create(:issue, :confidential, :closed, project: project, author: author, milestone: milestone) }
let!(:closed_security_issue_4) { create(:issue, :confidential, :closed, project: project, assignees: [assignee], milestone: milestone) }
let!(:merge_request) { create(:merge_request, source_project: project, target_project: project, milestone: milestone) }
+ let(:label_1) { create(:label, title: 'label_1', project: project, priority: 1) }
+ let(:label_2) { create(:label, title: 'label_2', project: project, priority: 2) }
+ let(:label_3) { create(:label, title: 'label_3', project: project) }
before do
project.team << [member, :developer]
project.team << [guest, :guest]
end
+ describe '#issues_visible_to_user' do
+ it 'sorts issues by label priority' do
+ issue.labels << label_1
+ security_issue_1.labels << label_2
+ closed_issue_1.labels << label_3
+
+ issues = milestone.issues_visible_to_user(member)
+
+ expect(issues.first).to eq(issue)
+ expect(issues.second).to eq(security_issue_1)
+ expect(issues.third).not_to eq(closed_issue_1)
+ end
+ end
+
+ describe '#sorted_merge_requests' do
+ let(:merge_request_1) { create(:merge_request, :simple, source_project: project, source_branch: 'branch_1', milestone: milestone) }
+ let(:merge_request_2) { create(:merge_request, :simple, source_project: project, source_branch: 'branch_2', milestone: milestone) }
+ let(:merge_request_3) { create(:merge_request, :simple, source_project: project, source_branch: 'branch_3', milestone: milestone) }
+
+ it 'sorts merge requests by label priority' do
+ merge_request_2.labels << label_1
+ merge_request_1.labels << label_2
+ merge_request_3.labels << label_3
+
+ merge_requests = milestone.sorted_merge_requests
+
+ expect(merge_requests.first).to eq(merge_request_2)
+ expect(merge_requests.second).to eq(merge_request_1)
+ expect(merge_requests.third).to eq(merge_request_3)
+ end
+ end
+
describe '#closed_items_count' do
it 'does not count confidential issues for non project members' do
expect(milestone.closed_items_count(non_member)).to eq 2
diff --git a/spec/models/group_milestone_spec.rb b/spec/models/group_milestone_spec.rb
index 916afb7aaf5..b81d985b15c 100644
--- a/spec/models/group_milestone_spec.rb
+++ b/spec/models/group_milestone_spec.rb
@@ -3,6 +3,7 @@ require 'spec_helper'
describe GroupMilestone, models: true do
let(:group) { create(:group) }
let(:project) { create(:empty_project, group: group) }
+ let(:project_2) { create(:empty_project, group: group) }
let(:project_milestone) do
create(:milestone, title: "Milestone v1.2", project: project)
end
diff --git a/spec/models/milestone_spec.rb b/spec/models/milestone_spec.rb
index aa1ce89ffd7..20b96c08a8f 100644
--- a/spec/models/milestone_spec.rb
+++ b/spec/models/milestone_spec.rb
@@ -144,35 +144,6 @@ describe Milestone, models: true do
end
end
- describe '#sort_issues' do
- let(:milestone) { create(:milestone) }
-
- let(:issue1) { create(:issue, milestone: milestone, position: 1) }
- let(:issue2) { create(:issue, milestone: milestone, position: 2) }
- let(:issue3) { create(:issue, milestone: milestone, position: 3) }
- let(:issue4) { create(:issue, position: 42) }
-
- it 'sorts the given issues' do
- milestone.sort_issues([issue3.id, issue2.id, issue1.id])
-
- issue1.reload
- issue2.reload
- issue3.reload
-
- expect(issue1.position).to eq(3)
- expect(issue2.position).to eq(2)
- expect(issue3.position).to eq(1)
- end
-
- it 'ignores issues not part of the milestone' do
- milestone.sort_issues([issue3.id, issue2.id, issue1.id, issue4.id])
-
- issue4.reload
-
- expect(issue4.position).to eq(42)
- end
- end
-
describe '.search' do
let(:milestone) { create(:milestone, title: 'foo', description: 'bar') }