summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2017-07-07 11:50:01 +0200
committerBob Van Landuyt <bob@vanlanduyt.co>2017-07-07 11:50:01 +0200
commitc478202ebfa06fdd4ecbafbba285f98d2aa08d60 (patch)
tree0c8734236e6c91bf074c1cccd89c7a8f06c49757
parentde2d5ce685877249434ba412b5839910bc703882 (diff)
downloadgitlab-ce-bvl-backport-board-issue-create-service.tar.gz
This makes the `Boards::CreateService` more reusable for EEbvl-backport-board-issue-create-service
-rw-r--r--app/services/boards/create_service.rb19
-rw-r--r--spec/services/boards/create_service_spec.rb2
2 files changed, 13 insertions, 8 deletions
diff --git a/app/services/boards/create_service.rb b/app/services/boards/create_service.rb
index 68f6a8619e5..9eedb9e65a2 100644
--- a/app/services/boards/create_service.rb
+++ b/app/services/boards/create_service.rb
@@ -1,19 +1,22 @@
module Boards
class CreateService < BaseService
def execute
- if project.boards.empty?
- create_board!
- else
- project.boards.first
- end
+ create_board! if can_create_board?
end
private
+ def can_create_board?
+ project.boards.size == 0
+ end
+
def create_board!
- board = project.boards.create
- board.lists.create(list_type: :backlog)
- board.lists.create(list_type: :closed)
+ board = project.boards.create(params)
+
+ if board.persisted?
+ board.lists.create(list_type: :backlog)
+ board.lists.create(list_type: :closed)
+ end
board
end
diff --git a/spec/services/boards/create_service_spec.rb b/spec/services/boards/create_service_spec.rb
index effa4633d13..89615df1692 100644
--- a/spec/services/boards/create_service_spec.rb
+++ b/spec/services/boards/create_service_spec.rb
@@ -26,6 +26,8 @@ describe Boards::CreateService, services: true do
end
it 'does not create a new board' do
+ expect(service).to receive(:can_create_board?) { false }
+
expect { service.execute }.not_to change(project.boards, :count)
end
end