Restrict the number of permitted boards per project to one
This commit is contained in:
parent
fb5a420206
commit
95a5cc9285
2 changed files with 15 additions and 1 deletions
|
@ -16,6 +16,7 @@ class Project < ActiveRecord::Base
|
|||
|
||||
extend Gitlab::ConfigHelper
|
||||
|
||||
NUMBER_OF_PERMITTED_BOARDS = 1
|
||||
UNKNOWN_IMPORT_URL = 'http://unknown.git'
|
||||
|
||||
cache_markdown_field :description, pipeline: :description
|
||||
|
@ -65,7 +66,7 @@ class Project < ActiveRecord::Base
|
|||
belongs_to :namespace
|
||||
|
||||
has_one :last_event, -> {order 'events.created_at DESC'}, class_name: 'Event', foreign_key: 'project_id'
|
||||
has_many :boards, dependent: :destroy
|
||||
has_many :boards, before_add: :validate_board_limit, dependent: :destroy
|
||||
|
||||
# Project services
|
||||
has_many :services
|
||||
|
@ -1338,4 +1339,8 @@ class Project < ActiveRecord::Base
|
|||
|
||||
shared_projects.any?
|
||||
end
|
||||
|
||||
def validate_board_limit(board)
|
||||
raise StandardError, 'Number of permitted boards exceeded' if boards.size >= NUMBER_OF_PERMITTED_BOARDS
|
||||
end
|
||||
end
|
||||
|
|
|
@ -94,6 +94,15 @@ describe Project, models: true do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#boards' do
|
||||
it 'raises an error when attempting to add more than one board to the project' do
|
||||
subject.boards.build
|
||||
|
||||
expect { subject.boards.build }.to raise_error(StandardError, 'Number of permitted boards exceeded')
|
||||
expect(subject.boards.size).to eq 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'modules' do
|
||||
|
|
Loading…
Reference in a new issue