BigW Consortium Gitlab

Commit 0d2c68d5 by Toon Claes

Deduplicate tests for Merge Request buttons

Use shared examples to test the presence of the Merge Request button on the various pages.
parent 7ce39486
require 'spec_helper'
feature 'Merge Request buttons on branches page', feature: true do
let(:user) { create(:user) }
let(:project) { create(:project) }
context 'not logged in' do
it 'does not show merge request buttons' do
visit namespace_project_branches_path(project.namespace, project)
expect(page).to have_no_link('Merge Request')
end
end
context 'logged in a developer' do
before do
login_as(user)
project.team << [user, :developer]
end
it 'shows merge request buttons' do
href = new_namespace_project_merge_request_path(project.namespace,
project,
merge_request: { source_branch: 'feature',
target_branch: 'master' })
visit namespace_project_branches_path(project.namespace, project)
expect(page).to have_link('Merge Request', href: href)
end
end
context 'logged in as non-member' do
before do
login_as(user)
end
it 'does not show merge request buttons' do
visit namespace_project_branches_path(project.namespace, project)
expect(page).to have_no_link('Merge Request')
end
context 'on own fork of project' do
let(:forked_project) do
create(:project, forked_from_project: project)
end
let(:user) { forked_project.owner }
it 'shows merge request buttons' do
href = new_namespace_project_merge_request_path(forked_project.namespace,
forked_project,
merge_request: { source_branch: 'feature',
target_branch: 'master' })
visit namespace_project_branches_path(forked_project.namespace, forked_project)
expect(page).to have_link('Merge Request', href: href)
end
end
end
end
require 'spec_helper'
feature 'Merge Request button on commits page', feature: true do
let(:user) { create(:user) }
let(:project) { create(:project) }
context 'not logged in' do
it 'does not show Create Merge Request button' do
visit namespace_project_compare_path(project.namespace, project, from: 'master', to: 'feature')
expect(page).to have_no_link('Create Merge Request')
end
end
context 'logged in a developer' do
before do
login_as(user)
project.team << [user, :developer]
end
it 'shows Create Merge Request button' do
href = new_namespace_project_merge_request_path(project.namespace,
project,
merge_request: { source_branch: 'feature',
target_branch: 'master' })
visit namespace_project_compare_path(project.namespace, project, from: 'master', to: 'feature')
expect(page).to have_link('Create Merge Request', href: href)
end
end
context 'logged in as non-member' do
before do
login_as(user)
end
it 'does not show Create Merge Request button' do
visit namespace_project_compare_path(project.namespace, project, from: 'master', to: 'feature')
expect(page).to have_no_link('Create Merge Request')
end
context 'on own fork of project' do
let(:forked_project) do
create(:project, forked_from_project: project)
end
let(:user) { forked_project.owner }
it 'shows Create Merge Request button' do
href = new_namespace_project_merge_request_path(forked_project.namespace,
forked_project,
merge_request: { source_branch: 'feature',
target_branch: 'master' })
visit namespace_project_compare_path(forked_project.namespace, forked_project, from: 'master', to: 'feature')
expect(page).to have_link('Create Merge Request', href: href)
end
end
end
end
require 'spec_helper'
feature 'Merge Request button on commits page', feature: true do
let(:user) { create(:user) }
let(:project) { create(:project) }
feature 'Merge Request button', feature: true do
shared_examples 'Merge Request button only shown when allowed' do
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:forked_project) { create(:project, forked_from_project: project) }
context 'not logged in' do
it 'does not show Create Merge Request button' do
visit namespace_project_commits_path(project.namespace, project, 'feature')
context 'not logged in' do
it 'does not show Create Merge Request button' do
visit url
expect(page).to have_no_link('Create Merge Request')
end
end
context 'logged in a developer' do
before do
login_as(user)
project.team << [user, :developer]
expect(page).not_to have_link(label)
end
end
it 'shows Create Merge Request button' do
href = new_namespace_project_merge_request_path(project.namespace,
project,
merge_request: { source_branch: 'feature',
target_branch: 'master' })
context 'logged in as developer' do
before do
login_as(user)
project.team << [user, :developer]
end
visit namespace_project_commits_path(project.namespace, project, 'feature')
it 'shows Create Merge Request button' do
href = new_namespace_project_merge_request_path(project.namespace,
project,
merge_request: { source_branch: 'feature',
target_branch: 'master' })
expect(page).to have_link('Create Merge Request', href: href)
end
end
visit url
context 'logged in as non-member' do
before do
login_as(user)
expect(page).to have_link(label, href: href)
end
end
it 'does not show Create Merge Request button' do
visit namespace_project_commits_path(project.namespace, project, 'feature')
context 'logged in as non-member' do
before do
login_as(user)
end
expect(page).to have_no_link('Create Merge Request')
end
it 'does not show Create Merge Request button' do
visit url
context 'on own fork of project' do
let(:forked_project) do
create(:project, forked_from_project: project)
expect(page).not_to have_link(label)
end
let(:user) { forked_project.owner }
it 'shows Create Merge Request button' do
href = new_namespace_project_merge_request_path(forked_project.namespace,
forked_project,
merge_request: { source_branch: 'feature',
target_branch: 'master' })
context 'on own fork of project' do
let(:user) { forked_project.owner }
it 'shows Create Merge Request button' do
href = new_namespace_project_merge_request_path(forked_project.namespace,
forked_project,
merge_request: { source_branch: 'feature',
target_branch: 'master' })
visit namespace_project_commits_path(forked_project.namespace, forked_project, 'feature')
visit fork_url
expect(page).to have_link('Create Merge Request', href: href)
expect(page).to have_link(label, href: href)
end
end
end
end
context 'on branches page' do
it_behaves_like 'Merge Request button only shown when allowed' do
let(:label) { 'Merge Request' }
let(:url) { namespace_project_branches_path(project.namespace, project) }
let(:fork_url) { namespace_project_branches_path(forked_project.namespace, forked_project) }
end
end
context 'on compare page' do
it_behaves_like 'Merge Request button only shown when allowed' do
let(:label) { 'Create Merge Request' }
let(:url) { namespace_project_compare_path(project.namespace, project, from: 'master', to: 'feature') }
let(:fork_url) { namespace_project_compare_path(forked_project.namespace, forked_project, from: 'master', to: 'feature') }
end
end
context 'on commits page' do
it_behaves_like 'Merge Request button only shown when allowed' do
let(:label) { 'Create Merge Request' }
let(:url) { namespace_project_commits_path(project.namespace, project, 'feature') }
let(:fork_url) { namespace_project_commits_path(forked_project.namespace, forked_project, 'feature') }
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