Use stub_application_setting in a few more specs
These specs also failed when run by themselves before this change, so we've likely got some kind of cross-test contamination going on.
This commit is contained in:
parent
4b4351a18c
commit
cf7c57aaf5
8 changed files with 35 additions and 29 deletions
|
@ -9,8 +9,7 @@ describe 'Profile account page', feature: true do
|
|||
|
||||
describe 'when signup is enabled' do
|
||||
before do
|
||||
allow_any_instance_of(ApplicationSetting).
|
||||
to receive(:signup_enabled?).and_return(true)
|
||||
stub_application_setting(signup_enabled: true)
|
||||
visit profile_account_path
|
||||
end
|
||||
|
||||
|
@ -24,8 +23,7 @@ describe 'Profile account page', feature: true do
|
|||
|
||||
describe 'when signup is disabled' do
|
||||
before do
|
||||
allow_any_instance_of(ApplicationSetting).
|
||||
to receive(:signup_enabled?).and_return(false)
|
||||
stub_application_setting(signup_enabled: false)
|
||||
visit profile_account_path
|
||||
end
|
||||
|
||||
|
|
|
@ -220,9 +220,7 @@ describe API::API, api: true do
|
|||
context 'when a visibility level is restricted' do
|
||||
before do
|
||||
@project = attributes_for(:project, { public: true })
|
||||
allow_any_instance_of(ApplicationSetting).to(
|
||||
receive(:restricted_visibility_levels).and_return([20])
|
||||
)
|
||||
stub_application_setting(restricted_visibility_levels: [Gitlab::VisibilityLevel::PUBLIC])
|
||||
end
|
||||
|
||||
it 'should not allow a non-admin to use a restricted visibility level' do
|
||||
|
|
|
@ -14,11 +14,7 @@ describe CreateSnippetService do
|
|||
|
||||
context 'When public visibility is restricted' do
|
||||
before do
|
||||
allow_any_instance_of(ApplicationSetting).to(
|
||||
receive(:restricted_visibility_levels).and_return(
|
||||
[Gitlab::VisibilityLevel::PUBLIC]
|
||||
)
|
||||
)
|
||||
stub_application_setting(restricted_visibility_levels: [Gitlab::VisibilityLevel::PUBLIC])
|
||||
|
||||
@opts.merge!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
|
||||
end
|
||||
|
|
|
@ -124,9 +124,7 @@ describe GitPushService do
|
|||
end
|
||||
|
||||
it "when pushing a branch for the first time with default branch protection disabled" do
|
||||
allow(ApplicationSetting.current_application_settings).
|
||||
to receive(:default_branch_protection).
|
||||
and_return(Gitlab::Access::PROTECTION_NONE)
|
||||
stub_application_setting(default_branch_protection: Gitlab::Access::PROTECTION_NONE)
|
||||
|
||||
expect(project).to receive(:execute_hooks)
|
||||
expect(project.default_branch).to eq("master")
|
||||
|
@ -135,9 +133,7 @@ describe GitPushService do
|
|||
end
|
||||
|
||||
it "when pushing a branch for the first time with default branch protection set to 'developers can push'" do
|
||||
allow(ApplicationSetting.current_application_settings).
|
||||
to receive(:default_branch_protection).
|
||||
and_return(Gitlab::Access::PROTECTION_DEV_CAN_PUSH)
|
||||
stub_application_setting(default_branch_protection: Gitlab::Access::PROTECTION_DEV_CAN_PUSH)
|
||||
|
||||
expect(project).to receive(:execute_hooks)
|
||||
expect(project.default_branch).to eq("master")
|
||||
|
|
|
@ -58,9 +58,7 @@ describe Projects::CreateService do
|
|||
|
||||
context 'restricted visibility level' do
|
||||
before do
|
||||
allow_any_instance_of(ApplicationSetting).to(
|
||||
receive(:restricted_visibility_levels).and_return([20])
|
||||
)
|
||||
stub_application_setting(restricted_visibility_levels: [Gitlab::VisibilityLevel::PUBLIC])
|
||||
|
||||
@opts.merge!(
|
||||
visibility_level: Gitlab::VisibilityLevel.options['Public']
|
||||
|
|
|
@ -47,9 +47,7 @@ describe Projects::UpdateService do
|
|||
|
||||
context 'respect configured visibility restrictions setting' do
|
||||
before(:each) do
|
||||
allow_any_instance_of(ApplicationSetting).to(
|
||||
receive(:restricted_visibility_levels).and_return([20])
|
||||
)
|
||||
stub_application_setting(restricted_visibility_levels: [Gitlab::VisibilityLevel::PUBLIC])
|
||||
end
|
||||
|
||||
context 'should be private when updated to private' do
|
||||
|
|
|
@ -14,11 +14,7 @@ describe UpdateSnippetService do
|
|||
|
||||
context 'When public visibility is restricted' do
|
||||
before do
|
||||
allow_any_instance_of(ApplicationSetting).to(
|
||||
receive(:restricted_visibility_levels).and_return(
|
||||
[Gitlab::VisibilityLevel::PUBLIC]
|
||||
)
|
||||
)
|
||||
stub_application_setting(restricted_visibility_levels: [Gitlab::VisibilityLevel::PUBLIC])
|
||||
|
||||
@snippet = create_snippet(@project, @user, @opts)
|
||||
@opts.merge!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
module StubConfiguration
|
||||
def stub_application_setting(messages)
|
||||
add_predicates(messages)
|
||||
|
||||
# Stubbing both of these because we're not yet consistent with how we access
|
||||
# current application settings
|
||||
allow_any_instance_of(ApplicationSetting).to receive_messages(messages)
|
||||
allow(Gitlab::CurrentSettings.current_application_settings).
|
||||
to receive_messages(messages)
|
||||
end
|
||||
|
@ -11,4 +16,25 @@ module StubConfiguration
|
|||
def stub_gravatar_setting(messages)
|
||||
allow(Gitlab.config.gravatar).to receive_messages(messages)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Modifies stubbed messages to also stub possible predicate versions
|
||||
#
|
||||
# Examples:
|
||||
#
|
||||
# add_predicates(foo: true)
|
||||
# # => {foo: true, foo?: true}
|
||||
#
|
||||
# add_predicates(signup_enabled?: false)
|
||||
# # => {signup_enabled? false}
|
||||
def add_predicates(messages)
|
||||
# Only modify keys that aren't already predicates
|
||||
keys = messages.keys.map(&:to_s).reject { |k| k.end_with?('?') }
|
||||
|
||||
keys.each do |key|
|
||||
predicate = key + '?'
|
||||
messages[predicate.to_sym] = messages[key.to_sym]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue