Create Backlog/Done lists when creating a new board

parent b23683b0
......@@ -5,15 +5,18 @@ module Boards
end
def execute
if project.board.present?
project.board
else
project.create_board
end
create_board! unless project.board.present?
project.board
end
private
attr_reader :project
def create_board!
project.create_board
project.board.lists.create(list_type: :backlog, position: 0)
project.board.lists.create(list_type: :done, position: 1)
end
end
end
......@@ -2,18 +2,34 @@ 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)
subject(:service) { described_class.new(project) }
expect { service.execute }.to change(Board, :count).by(1)
context 'when project does not have a board' do
let(:project) { create(:empty_project, board: nil) }
it 'creates a new board' do
expect { service.execute }.to change(Board, :count).by(1)
end
it 'creates default lists' do
service.execute
expect(project.board.lists.size).to eq 2
expect(project.board.lists.first).to be_backlog
expect(project.board.lists.last).to be_done
end
end
it 'returns project board when project has one' do
project = create(:project_with_board)
service = described_class.new(project)
context 'when project has a board' do
let!(:project) { create(:project_with_board) }
it 'does not create a new board' do
expect { service.execute }.not_to change(Board, :count)
end
expect(service.execute).to eq project.board
it 'does not create board lists' do
expect { service.execute }.not_to change(project.board.lists, :count)
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment