[Issue sorting on board] Addressing review issues

This commit is contained in:
Valery Sizov 2017-03-03 20:10:07 +02:00
parent 39db04bb17
commit 32538def14
5 changed files with 12 additions and 32 deletions

View File

@ -114,6 +114,13 @@ module RelativePositioning
private
# This method takes two integer values (positions) and
# calculates some random position between them. The range is huge as
# the maximum integer value is 2147483647. Ideally, the calculated value would be
# exactly between those terminating values, but this will introduce possibility of a race condition
# so two or more issues can get the same value, we want to avoid that and we also want to avoid
# using a lock here. If we have two issues with distance more than one thousand, we are OK.
# Given the huge range of possible values that integer can fit we shoud never face a problem.
def position_between(pos_before, pos_after)
pos_before ||= MIN_POSITION
pos_after ||= MAX_POSITION

View File

@ -68,11 +68,9 @@ module Boards
end
def move_between_iids
move_after_iid = params[:move_after_iid]
move_before_iid = params[:move_before_iid]
return unless move_after_iid || move_before_iid
return unless params[:move_after_iid] || params[:move_before_iid]
[move_after_iid, move_before_iid]
[params[:move_after_iid], params[:move_before_iid]]
end
end
end

View File

@ -21,6 +21,7 @@ Issue:
- milestone_id
- weight
- time_estimate
- relative_position
Event:
- id
- target_type

View File

@ -43,32 +43,6 @@ describe Boards::Issues::ListService, services: true do
described_class.new(project, user, params).execute
end
context 'sets default order to priority' do
it 'returns opened issues when list id is missing' do
params = { board_id: board.id }
issues = described_class.new(project, user, params).execute
expect(issues).to eq [opened_issue2, reopened_issue1, opened_issue1]
end
it 'returns closed issues when listing issues from Done' do
params = { board_id: board.id, id: done.id }
issues = described_class.new(project, user, params).execute
expect(issues).to eq [closed_issue4, closed_issue2, closed_issue3, closed_issue1]
end
it 'returns opened issues that have label list applied when listing issues from a label list' do
params = { board_id: board.id, id: list1.id }
issues = described_class.new(project, user, params).execute
expect(issues).to eq [list1_issue3, list1_issue1, list1_issue2]
end
end
context 'with list that does not belong to the board' do
it 'raises an error' do
list = create(:list)

View File

@ -94,9 +94,9 @@ describe Boards::Issues::MoveService, services: true do
end
it 'sorts issues' do
issue.move_between(issue1, issue2)
issue.move_between!(issue1, issue2)
params.merge! move_after_iid: issue1.iid, move_before_iid: issue2.iid
params.merge! move_after_iid: issue.iid, move_before_iid: issue2.iid
described_class.new(project, user, params).execute(issue1)