Add service to create a new board for a project
This commit is contained in:
parent
6e8d06a594
commit
a77aee9369
|
@ -0,0 +1,19 @@
|
|||
module Boards
|
||||
class CreateService
|
||||
def initialize(project)
|
||||
@project = project
|
||||
end
|
||||
|
||||
def execute
|
||||
if project.board.present?
|
||||
project.board
|
||||
else
|
||||
project.create_board
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :project
|
||||
end
|
||||
end
|
|
@ -83,4 +83,10 @@ FactoryGirl.define do
|
|||
)
|
||||
end
|
||||
end
|
||||
|
||||
factory :project_with_board, parent: :empty_project do
|
||||
after(:create) do |project|
|
||||
project.create_board
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Boards::CreateService, services: true do
|
||||
describe '#execute' do
|
||||
it 'creates a new board when project does not has one' do
|
||||
project = create(:empty_project, board: nil)
|
||||
service = described_class.new(project)
|
||||
|
||||
expect { service.execute }.to change(Board, :count).by(1)
|
||||
end
|
||||
|
||||
it 'returns project board when project has one' do
|
||||
project = create(:project_with_board)
|
||||
service = described_class.new(project)
|
||||
|
||||
expect(service.execute).to eq project.board
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue