Add service to create a new board for a project

This commit is contained in:
Douglas Barbosa Alexandre 2016-07-27 17:41:19 -03:00
parent 6e8d06a594
commit a77aee9369
3 changed files with 44 additions and 0 deletions

View File

@ -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

View File

@ -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

View File

@ -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