Commit 496f9a9e authored by Nick Thomas's avatar Nick Thomas

Merge branch 'ab-roulette-multiple-roles' into 'master'

Support multiple roulette roles per project

See merge request gitlab-org/gitlab-ce!25818
parents db266771 7f0ec9d8
......@@ -21,21 +21,21 @@ module Gitlab
# Traintainers also count as reviewers
def reviewer?(project, category)
capabilities(project) == "reviewer #{category}" || traintainer?(project, category)
capabilities(project).include?("reviewer #{category}") || traintainer?(project, category)
end
def traintainer?(project, category)
capabilities(project) == "trainee_maintainer #{category}"
capabilities(project).include?("trainee_maintainer #{category}")
end
def maintainer?(project, category)
capabilities(project) == "maintainer #{category}"
capabilities(project).include?("maintainer #{category}")
end
private
def capabilities(project)
projects.fetch(project, '')
Array(projects.fetch(project, []))
end
end
end
......
# frozen_string_literal: true
describe Gitlab::Danger::Teammate do
subject { described_class.new({ 'projects' => projects }) }
let(:projects) { { project => capabilities } }
let(:project) { double }
describe 'multiple roles project project' do
let(:capabilities) { ['reviewer backend', 'maintainer frontend', 'trainee_maintainer database'] }
it '#reviewer? supports multiple roles per project' do
expect(subject.reviewer?(project, 'backend')).to be_truthy
end
it '#traintainer? supports multiple roles per project' do
expect(subject.traintainer?(project, 'database')).to be_truthy
end
it '#maintainer? supports multiple roles per project' do
expect(subject.maintainer?(project, 'frontend')).to be_truthy
end
end
describe 'one role project project' do
let(:capabilities) { 'reviewer backend' }
it '#reviewer? supports one role per project' do
expect(subject.reviewer?(project, 'backend')).to be_truthy
end
it '#traintainer? supports one role per project' do
expect(subject.traintainer?(project, 'database')).to be_falsey
end
it '#maintainer? supports one role per project' do
expect(subject.maintainer?(project, 'frontend')).to be_falsey
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