summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToon Claes <toon@gitlab.com>2017-01-20 22:41:03 +0100
committerToon Claes <toon@gitlab.com>2017-01-23 15:52:53 +0100
commit0d2c68d546cb58760a9d30a41b1454b02c462ad8 (patch)
treee29f5fc0f454ef555df9b5be5a4baa8cfced553d
parent7ce39486b54a375eb13a11deb1835d6fcf218a4a (diff)
downloadgitlab-ce-0d2c68d546cb58760a9d30a41b1454b02c462ad8.tar.gz
Deduplicate tests for Merge Request buttons
Use shared examples to test the presence of the Merge Request button on the various pages.
-rw-r--r--spec/features/projects/branches/merge_request_buttons_spec.rb62
-rw-r--r--spec/features/projects/commits/merge_request_button_spec.rb62
-rw-r--r--spec/features/projects/compare/merge_request_button_spec.rb62
-rw-r--r--spec/features/projects/merge_request_button_spec.rb86
4 files changed, 86 insertions, 186 deletions
diff --git a/spec/features/projects/branches/merge_request_buttons_spec.rb b/spec/features/projects/branches/merge_request_buttons_spec.rb
deleted file mode 100644
index 6864113fcb4..00000000000
--- a/spec/features/projects/branches/merge_request_buttons_spec.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-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
diff --git a/spec/features/projects/commits/merge_request_button_spec.rb b/spec/features/projects/commits/merge_request_button_spec.rb
deleted file mode 100644
index c986d087eba..00000000000
--- a/spec/features/projects/commits/merge_request_button_spec.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-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_commits_path(project.namespace, project, '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_commits_path(project.namespace, project, '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_commits_path(project.namespace, project, '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_commits_path(forked_project.namespace, forked_project, 'feature')
-
- expect(page).to have_link('Create Merge Request', href: href)
- end
- end
- end
-end
diff --git a/spec/features/projects/compare/merge_request_button_spec.rb b/spec/features/projects/compare/merge_request_button_spec.rb
deleted file mode 100644
index 2b49c394759..00000000000
--- a/spec/features/projects/compare/merge_request_button_spec.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-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
diff --git a/spec/features/projects/merge_request_button_spec.rb b/spec/features/projects/merge_request_button_spec.rb
new file mode 100644
index 00000000000..177038f9a4c
--- /dev/null
+++ b/spec/features/projects/merge_request_button_spec.rb
@@ -0,0 +1,86 @@
+require 'spec_helper'
+
+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 url
+
+ expect(page).not_to have_link(label)
+ end
+ end
+
+ context 'logged in as 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 url
+
+ expect(page).to have_link(label, 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 url
+
+ expect(page).not_to have_link(label)
+ end
+
+ 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 fork_url
+
+ 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