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:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-07-28 08:20:23 +0300
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-08-17 18:58:57 +0300
commit26ac0846408b21bd541f3c31f082f00e9422d9f4 (patch)
tree453bd22cfc5d4ef9fd349228f1c110a9340c2c6a /spec/services/boards/lists/move_service_spec.rb
parent5ef567e33df9f4562f56fdbf60329c027dbfa913 (diff)
Does not allow Backlog/Done lists to be moved
Diffstat (limited to 'spec/services/boards/lists/move_service_spec.rb')
-rw-r--r--spec/services/boards/lists/move_service_spec.rb130
1 files changed, 69 insertions, 61 deletions
diff --git a/spec/services/boards/lists/move_service_spec.rb b/spec/services/boards/lists/move_service_spec.rb
index e61914dba62..072087a0e05 100644
--- a/spec/services/boards/lists/move_service_spec.rb
+++ b/spec/services/boards/lists/move_service_spec.rb
@@ -4,73 +4,81 @@ describe Boards::Lists::MoveService, services: true do
describe '#execute' do
let(:project) { create(:project_with_board) }
let(:board) { project.board }
+ let!(:list1) { create(:backlog_list, board: board, position: 1) }
+ let!(:list2) { create(:label_list, board: board, position: 2) }
+ let!(:list3) { create(:label_list, board: board, position: 3) }
+ let!(:list4) { create(:label_list, board: board, position: 4) }
+ let!(:list5) { create(:label_list, board: board, position: 5) }
+ let!(:list6) { create(:done_list, board: board, position: 6) }
- it 'keeps position of lists when new position is nil' do
- list1 = create(:list, board: board, position: 1)
- list2 = create(:list, board: board, position: 2)
- list3 = create(:list, board: board, position: 3)
- list4 = create(:list, board: board, position: 4)
- list5 = create(:list, board: board, position: 5)
-
- service = described_class.new(project, { list_id: list2.id, position: nil })
-
- expect(service.execute).to eq false
- expect(list1.reload.position).to eq 1
- expect(list2.reload.position).to eq 2
- expect(list3.reload.position).to eq 3
- expect(list4.reload.position).to eq 4
- expect(list5.reload.position).to eq 5
- end
+ context 'when list type is set to label' do
+ it 'keeps position of lists when new position is nil' do
+ service = described_class.new(project, { list_id: list2.id, position: nil })
+
+ service.execute
+
+ expect(positions_of_lists).to eq [1, 2, 3, 4, 5, 6]
+ end
+
+ it 'keeps position of lists when new positon is equal to old position' do
+ service = described_class.new(project, { list_id: list2.id, position: 2 })
+
+ service.execute
+
+ expect(positions_of_lists).to eq [1, 2, 3, 4, 5, 6]
+ end
+
+ it 'keeps position of lists when new positon is equal to first position' do
+ service = described_class.new(project, { list_id: list3.id, position: 1 })
+
+ service.execute
+
+ expect(positions_of_lists).to eq [1, 2, 3, 4, 5, 6]
+ end
+
+ it 'keeps position of lists when new positon is equal to last position' do
+ service = described_class.new(project, { list_id: list3.id, position: 6 })
+
+ service.execute
+
+ expect(positions_of_lists).to eq [1, 2, 3, 4, 5, 6]
+ end
- it 'keeps position of lists when new positon is equal to old position' do
- list1 = create(:list, board: board, position: 1)
- list2 = create(:list, board: board, position: 2)
- list3 = create(:list, board: board, position: 3)
- list4 = create(:list, board: board, position: 4)
- list5 = create(:list, board: board, position: 5)
-
- service = described_class.new(project, { list_id: list2.id, position: 2 })
-
- expect(service.execute).to eq false
- expect(list1.reload.position).to eq 1
- expect(list2.reload.position).to eq 2
- expect(list3.reload.position).to eq 3
- expect(list4.reload.position).to eq 4
- expect(list5.reload.position).to eq 5
+ it 'decrements position of intermediate lists when new position is greater than old position' do
+ service = described_class.new(project, { list_id: list2.id, position: 5 })
+
+ service.execute
+
+ expect(positions_of_lists).to eq [1, 5, 2, 3, 4, 6]
+ end
+
+ it 'increments position of intermediate lists when when new position is lower than old position' do
+ service = described_class.new(project, { list_id: list5.id, position: 2 })
+
+ service.execute
+
+ expect(positions_of_lists).to eq [1, 3, 4, 5, 2, 6]
+ end
end
- it 'decrements position of intermediate lists when new position is greater than old position' do
- list1 = create(:list, board: board, position: 1)
- list2 = create(:list, board: board, position: 2)
- list3 = create(:list, board: board, position: 3)
- list4 = create(:list, board: board, position: 4)
- list5 = create(:list, board: board, position: 5)
-
- service = described_class.new(project, { list_id: list2.id, position: 5 })
-
- expect(service.execute).to eq true
- expect(list1.reload.position).to eq 1
- expect(list2.reload.position).to eq 5
- expect(list3.reload.position).to eq 2
- expect(list4.reload.position).to eq 3
- expect(list5.reload.position).to eq 4
+ it 'keeps position of lists when list type is backlog' do
+ service = described_class.new(project, { list_id: list1.id, position: 2 })
+
+ service.execute
+
+ expect(positions_of_lists).to eq [1, 2, 3, 4, 5, 6]
end
- it 'increments position of intermediate lists when when new position is lower than old position' do
- list1 = create(:list, board: board, position: 1)
- list2 = create(:list, board: board, position: 2)
- list3 = create(:list, board: board, position: 3)
- list4 = create(:list, board: board, position: 4)
- list5 = create(:list, board: board, position: 5)
-
- service = described_class.new(project, { list_id: list5.id, position: 2 })
-
- expect(service.execute).to eq true
- expect(list1.reload.position).to eq 1
- expect(list2.reload.position).to eq 3
- expect(list3.reload.position).to eq 4
- expect(list4.reload.position).to eq 5
- expect(list5.reload.position).to eq 2
+ it 'keeps position of lists when list type is done' do
+ service = described_class.new(project, { list_id: list6.id, position: 2 })
+
+ service.execute
+
+ expect(positions_of_lists).to eq [1, 2, 3, 4, 5, 6]
end
end
+
+ def positions_of_lists
+ (1..6).map { |index| send("list#{index}").reload.position }
+ end
end