diff options
author | Bob Van Landuyt <bob@vanlanduyt.co> | 2017-07-07 11:50:01 +0200 |
---|---|---|
committer | Bob Van Landuyt <bob@vanlanduyt.co> | 2017-07-07 11:50:01 +0200 |
commit | c478202ebfa06fdd4ecbafbba285f98d2aa08d60 (patch) | |
tree | 0c8734236e6c91bf074c1cccd89c7a8f06c49757 | |
parent | de2d5ce685877249434ba412b5839910bc703882 (diff) | |
download | gitlab-ce-c478202ebfa06fdd4ecbafbba285f98d2aa08d60.tar.gz |
This makes the `Boards::CreateService` more reusable for EEbvl-backport-board-issue-create-service
-rw-r--r-- | app/services/boards/create_service.rb | 19 | ||||
-rw-r--r-- | spec/services/boards/create_service_spec.rb | 2 |
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 |