52eeb56bf0
This refactors some of the logic used for protecting default branches, in particular Project#after_create_default_branch. The logic for this method is moved into a separate service class. Ideally we'd get rid of Project#after_create_default_branch entirely, but unfortunately Project#after_import depends on it. This means it has to stick around until we also refactor Project#after_import. For branch protection levels we introduce Gitlab::Access::BranchProtection, which provides a small wrapper around Integer based branch protection levels. Using this class removes the need for having to constantly refer to Gitlab::Access::PROTECTION_* constants.
54 lines
1.4 KiB
Ruby
54 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
describe Gitlab::Access::BranchProtection do
|
|
describe '#any?' do
|
|
using RSpec::Parameterized::TableSyntax
|
|
|
|
where(:level, :result) do
|
|
Gitlab::Access::PROTECTION_NONE | false
|
|
Gitlab::Access::PROTECTION_DEV_CAN_PUSH | true
|
|
Gitlab::Access::PROTECTION_DEV_CAN_MERGE | true
|
|
Gitlab::Access::PROTECTION_FULL | true
|
|
end
|
|
|
|
with_them do
|
|
it { expect(described_class.new(level).any?).to eq(result) }
|
|
end
|
|
end
|
|
|
|
describe '#developer_can_push?' do
|
|
using RSpec::Parameterized::TableSyntax
|
|
|
|
where(:level, :result) do
|
|
Gitlab::Access::PROTECTION_NONE | false
|
|
Gitlab::Access::PROTECTION_DEV_CAN_PUSH | true
|
|
Gitlab::Access::PROTECTION_DEV_CAN_MERGE | false
|
|
Gitlab::Access::PROTECTION_FULL | false
|
|
end
|
|
|
|
with_them do
|
|
it do
|
|
expect(described_class.new(level).developer_can_push?).to eq(result)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#developer_can_merge?' do
|
|
using RSpec::Parameterized::TableSyntax
|
|
|
|
where(:level, :result) do
|
|
Gitlab::Access::PROTECTION_NONE | false
|
|
Gitlab::Access::PROTECTION_DEV_CAN_PUSH | false
|
|
Gitlab::Access::PROTECTION_DEV_CAN_MERGE | true
|
|
Gitlab::Access::PROTECTION_FULL | false
|
|
end
|
|
|
|
with_them do
|
|
it do
|
|
expect(described_class.new(level).developer_can_merge?).to eq(result)
|
|
end
|
|
end
|
|
end
|
|
end
|