From 3aa1264dc6c0de3625bb1a2d6a0ee90140a2f519 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Sun, 29 Jan 2017 22:01:31 -0600 Subject: Add tests --- spec/features/compare_spec.rb | 50 ------------ spec/features/projects/blobs/view_on_env_spec.rb | 7 ++ spec/features/projects/commit/cherry_pick_spec.rb | 89 ++++++++++++++++++++++ spec/features/projects/commit/view_on_env_spec.rb | 9 +++ spec/features/projects/commits/cherry_pick_spec.rb | 89 ---------------------- spec/features/projects/compare/view_on_env_spec.rb | 9 +++ spec/features/projects/compare_spec.rb | 50 ++++++++++++ .../projects/merge_requests/view_on_env_spec.rb | 9 +++ 8 files changed, 173 insertions(+), 139 deletions(-) delete mode 100644 spec/features/compare_spec.rb create mode 100644 spec/features/projects/blobs/view_on_env_spec.rb create mode 100644 spec/features/projects/commit/cherry_pick_spec.rb create mode 100644 spec/features/projects/commit/view_on_env_spec.rb delete mode 100644 spec/features/projects/commits/cherry_pick_spec.rb create mode 100644 spec/features/projects/compare/view_on_env_spec.rb create mode 100644 spec/features/projects/compare_spec.rb create mode 100644 spec/features/projects/merge_requests/view_on_env_spec.rb (limited to 'spec/features') diff --git a/spec/features/compare_spec.rb b/spec/features/compare_spec.rb deleted file mode 100644 index 43eb4000e58..00000000000 --- a/spec/features/compare_spec.rb +++ /dev/null @@ -1,50 +0,0 @@ -require "spec_helper" - -describe "Compare", js: true do - let(:user) { create(:user) } - let(:project) { create(:project) } - - before do - project.team << [user, :master] - login_as user - visit namespace_project_compare_index_path(project.namespace, project, from: "master", to: "master") - end - - describe "branches" do - it "pre-populates fields" do - expect(find(".js-compare-from-dropdown .dropdown-toggle-text")).to have_content("master") - expect(find(".js-compare-to-dropdown .dropdown-toggle-text")).to have_content("master") - end - - it "compares branches" do - select_using_dropdown "from", "feature" - expect(find(".js-compare-from-dropdown .dropdown-toggle-text")).to have_content("feature") - - select_using_dropdown "to", "binary-encoding" - expect(find(".js-compare-to-dropdown .dropdown-toggle-text")).to have_content("binary-encoding") - - click_button "Compare" - expect(page).to have_content "Commits" - end - end - - describe "tags" do - it "compares tags" do - select_using_dropdown "from", "v1.0.0" - expect(find(".js-compare-from-dropdown .dropdown-toggle-text")).to have_content("v1.0.0") - - select_using_dropdown "to", "v1.1.0" - expect(find(".js-compare-to-dropdown .dropdown-toggle-text")).to have_content("v1.1.0") - - click_button "Compare" - expect(page).to have_content "Commits" - end - end - - def select_using_dropdown(dropdown_type, selection) - dropdown = find(".js-compare-#{dropdown_type}-dropdown") - dropdown.find(".compare-dropdown-toggle").click - dropdown.fill_in("Filter by Git revision", with: selection) - find_link(selection, visible: true).click - end -end diff --git a/spec/features/projects/blobs/view_on_env_spec.rb b/spec/features/projects/blobs/view_on_env_spec.rb new file mode 100644 index 00000000000..360f9d66609 --- /dev/null +++ b/spec/features/projects/blobs/view_on_env_spec.rb @@ -0,0 +1,7 @@ +require 'spec_helper' + +feature 'Blob' do + describe 'View on environment' do + # TODO: Test + end +end diff --git a/spec/features/projects/commit/cherry_pick_spec.rb b/spec/features/projects/commit/cherry_pick_spec.rb new file mode 100644 index 00000000000..7baf7913424 --- /dev/null +++ b/spec/features/projects/commit/cherry_pick_spec.rb @@ -0,0 +1,89 @@ +require 'spec_helper' +include WaitForAjax + +describe 'Cherry-pick Commits' do + let(:group) { create(:group) } + let(:project) { create(:project, namespace: group) } + let(:master_pickable_commit) { project.commit('7d3b0f7cff5f37573aea97cebfd5692ea1689924') } + let(:master_pickable_merge) { project.commit('e56497bb5f03a90a51293fc6d516788730953899') } + + before do + login_as :user + project.team << [@user, :master] + visit namespace_project_commit_path(project.namespace, project, master_pickable_commit.id) + end + + context "I cherry-pick a commit" do + it do + find("a[href='#modal-cherry-pick-commit']").click + expect(page).not_to have_content('v1.0.0') # Only branches, not tags + page.within('#modal-cherry-pick-commit') do + uncheck 'create_merge_request' + click_button 'Cherry-pick' + end + expect(page).to have_content('The commit has been successfully cherry-picked.') + end + end + + context "I cherry-pick a merge commit" do + it do + find("a[href='#modal-cherry-pick-commit']").click + page.within('#modal-cherry-pick-commit') do + uncheck 'create_merge_request' + click_button 'Cherry-pick' + end + expect(page).to have_content('The commit has been successfully cherry-picked.') + end + end + + context "I cherry-pick a commit that was previously cherry-picked" do + it do + find("a[href='#modal-cherry-pick-commit']").click + page.within('#modal-cherry-pick-commit') do + uncheck 'create_merge_request' + click_button 'Cherry-pick' + end + visit namespace_project_commit_path(project.namespace, project, master_pickable_commit.id) + find("a[href='#modal-cherry-pick-commit']").click + page.within('#modal-cherry-pick-commit') do + uncheck 'create_merge_request' + click_button 'Cherry-pick' + end + expect(page).to have_content('Sorry, we cannot cherry-pick this commit automatically.') + end + end + + context "I cherry-pick a commit in a new merge request" do + it do + find("a[href='#modal-cherry-pick-commit']").click + page.within('#modal-cherry-pick-commit') do + click_button 'Cherry-pick' + end + expect(page).to have_content('The commit has been successfully cherry-picked. You can now submit a merge request to get this change into the original branch.') + end + end + + context "I cherry-pick a commit from a different branch", js: true do + it do + find('.header-action-buttons a.dropdown-toggle').click + find(:css, "a[href='#modal-cherry-pick-commit']").click + + page.within('#modal-cherry-pick-commit') do + click_button 'master' + end + + wait_for_ajax + + page.within('#modal-cherry-pick-commit .dropdown-menu .dropdown-content') do + click_link 'feature' + end + + page.within('#modal-cherry-pick-commit') do + uncheck 'create_merge_request' + click_button 'Cherry-pick' + end + + expect(page).to have_content('The commit has been successfully cherry-picked.') + end + end +end diff --git a/spec/features/projects/commit/view_on_env_spec.rb b/spec/features/projects/commit/view_on_env_spec.rb new file mode 100644 index 00000000000..eee2814089a --- /dev/null +++ b/spec/features/projects/commit/view_on_env_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +feature 'Commit' do + describe 'Diff' do + describe 'View on environment' do + # TODO: Test + end + end +end diff --git a/spec/features/projects/commits/cherry_pick_spec.rb b/spec/features/projects/commits/cherry_pick_spec.rb deleted file mode 100644 index 7baf7913424..00000000000 --- a/spec/features/projects/commits/cherry_pick_spec.rb +++ /dev/null @@ -1,89 +0,0 @@ -require 'spec_helper' -include WaitForAjax - -describe 'Cherry-pick Commits' do - let(:group) { create(:group) } - let(:project) { create(:project, namespace: group) } - let(:master_pickable_commit) { project.commit('7d3b0f7cff5f37573aea97cebfd5692ea1689924') } - let(:master_pickable_merge) { project.commit('e56497bb5f03a90a51293fc6d516788730953899') } - - before do - login_as :user - project.team << [@user, :master] - visit namespace_project_commit_path(project.namespace, project, master_pickable_commit.id) - end - - context "I cherry-pick a commit" do - it do - find("a[href='#modal-cherry-pick-commit']").click - expect(page).not_to have_content('v1.0.0') # Only branches, not tags - page.within('#modal-cherry-pick-commit') do - uncheck 'create_merge_request' - click_button 'Cherry-pick' - end - expect(page).to have_content('The commit has been successfully cherry-picked.') - end - end - - context "I cherry-pick a merge commit" do - it do - find("a[href='#modal-cherry-pick-commit']").click - page.within('#modal-cherry-pick-commit') do - uncheck 'create_merge_request' - click_button 'Cherry-pick' - end - expect(page).to have_content('The commit has been successfully cherry-picked.') - end - end - - context "I cherry-pick a commit that was previously cherry-picked" do - it do - find("a[href='#modal-cherry-pick-commit']").click - page.within('#modal-cherry-pick-commit') do - uncheck 'create_merge_request' - click_button 'Cherry-pick' - end - visit namespace_project_commit_path(project.namespace, project, master_pickable_commit.id) - find("a[href='#modal-cherry-pick-commit']").click - page.within('#modal-cherry-pick-commit') do - uncheck 'create_merge_request' - click_button 'Cherry-pick' - end - expect(page).to have_content('Sorry, we cannot cherry-pick this commit automatically.') - end - end - - context "I cherry-pick a commit in a new merge request" do - it do - find("a[href='#modal-cherry-pick-commit']").click - page.within('#modal-cherry-pick-commit') do - click_button 'Cherry-pick' - end - expect(page).to have_content('The commit has been successfully cherry-picked. You can now submit a merge request to get this change into the original branch.') - end - end - - context "I cherry-pick a commit from a different branch", js: true do - it do - find('.header-action-buttons a.dropdown-toggle').click - find(:css, "a[href='#modal-cherry-pick-commit']").click - - page.within('#modal-cherry-pick-commit') do - click_button 'master' - end - - wait_for_ajax - - page.within('#modal-cherry-pick-commit .dropdown-menu .dropdown-content') do - click_link 'feature' - end - - page.within('#modal-cherry-pick-commit') do - uncheck 'create_merge_request' - click_button 'Cherry-pick' - end - - expect(page).to have_content('The commit has been successfully cherry-picked.') - end - end -end diff --git a/spec/features/projects/compare/view_on_env_spec.rb b/spec/features/projects/compare/view_on_env_spec.rb new file mode 100644 index 00000000000..0a4ec03b17f --- /dev/null +++ b/spec/features/projects/compare/view_on_env_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +feature 'Compare' do + describe 'Diff' do + describe 'View on environment' do + # TODO: Test + end + end +end diff --git a/spec/features/projects/compare_spec.rb b/spec/features/projects/compare_spec.rb new file mode 100644 index 00000000000..43eb4000e58 --- /dev/null +++ b/spec/features/projects/compare_spec.rb @@ -0,0 +1,50 @@ +require "spec_helper" + +describe "Compare", js: true do + let(:user) { create(:user) } + let(:project) { create(:project) } + + before do + project.team << [user, :master] + login_as user + visit namespace_project_compare_index_path(project.namespace, project, from: "master", to: "master") + end + + describe "branches" do + it "pre-populates fields" do + expect(find(".js-compare-from-dropdown .dropdown-toggle-text")).to have_content("master") + expect(find(".js-compare-to-dropdown .dropdown-toggle-text")).to have_content("master") + end + + it "compares branches" do + select_using_dropdown "from", "feature" + expect(find(".js-compare-from-dropdown .dropdown-toggle-text")).to have_content("feature") + + select_using_dropdown "to", "binary-encoding" + expect(find(".js-compare-to-dropdown .dropdown-toggle-text")).to have_content("binary-encoding") + + click_button "Compare" + expect(page).to have_content "Commits" + end + end + + describe "tags" do + it "compares tags" do + select_using_dropdown "from", "v1.0.0" + expect(find(".js-compare-from-dropdown .dropdown-toggle-text")).to have_content("v1.0.0") + + select_using_dropdown "to", "v1.1.0" + expect(find(".js-compare-to-dropdown .dropdown-toggle-text")).to have_content("v1.1.0") + + click_button "Compare" + expect(page).to have_content "Commits" + end + end + + def select_using_dropdown(dropdown_type, selection) + dropdown = find(".js-compare-#{dropdown_type}-dropdown") + dropdown.find(".compare-dropdown-toggle").click + dropdown.fill_in("Filter by Git revision", with: selection) + find_link(selection, visible: true).click + end +end diff --git a/spec/features/projects/merge_requests/view_on_env_spec.rb b/spec/features/projects/merge_requests/view_on_env_spec.rb new file mode 100644 index 00000000000..b25e499acd6 --- /dev/null +++ b/spec/features/projects/merge_requests/view_on_env_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +feature 'Merge Request' do + describe 'Diff' do + describe 'View on environment' do + # TODO: Test + end + end +end -- cgit v1.2.1 From 6edc8d50dcec3252fd5afa244f9ade2e062f920d Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 1 Feb 2017 15:49:20 -0600 Subject: Add feature specs --- spec/features/projects/blobs/view_on_env_spec.rb | 7 -- spec/features/projects/commit/view_on_env_spec.rb | 9 -- spec/features/projects/compare/view_on_env_spec.rb | 9 -- .../projects/merge_requests/view_on_env_spec.rb | 9 -- spec/features/projects/view_on_env_spec.rb | 140 +++++++++++++++++++++ 5 files changed, 140 insertions(+), 34 deletions(-) delete mode 100644 spec/features/projects/blobs/view_on_env_spec.rb delete mode 100644 spec/features/projects/commit/view_on_env_spec.rb delete mode 100644 spec/features/projects/compare/view_on_env_spec.rb delete mode 100644 spec/features/projects/merge_requests/view_on_env_spec.rb create mode 100644 spec/features/projects/view_on_env_spec.rb (limited to 'spec/features') diff --git a/spec/features/projects/blobs/view_on_env_spec.rb b/spec/features/projects/blobs/view_on_env_spec.rb deleted file mode 100644 index 360f9d66609..00000000000 --- a/spec/features/projects/blobs/view_on_env_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ -require 'spec_helper' - -feature 'Blob' do - describe 'View on environment' do - # TODO: Test - end -end diff --git a/spec/features/projects/commit/view_on_env_spec.rb b/spec/features/projects/commit/view_on_env_spec.rb deleted file mode 100644 index eee2814089a..00000000000 --- a/spec/features/projects/commit/view_on_env_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'spec_helper' - -feature 'Commit' do - describe 'Diff' do - describe 'View on environment' do - # TODO: Test - end - end -end diff --git a/spec/features/projects/compare/view_on_env_spec.rb b/spec/features/projects/compare/view_on_env_spec.rb deleted file mode 100644 index 0a4ec03b17f..00000000000 --- a/spec/features/projects/compare/view_on_env_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'spec_helper' - -feature 'Compare' do - describe 'Diff' do - describe 'View on environment' do - # TODO: Test - end - end -end diff --git a/spec/features/projects/merge_requests/view_on_env_spec.rb b/spec/features/projects/merge_requests/view_on_env_spec.rb deleted file mode 100644 index b25e499acd6..00000000000 --- a/spec/features/projects/merge_requests/view_on_env_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'spec_helper' - -feature 'Merge Request' do - describe 'Diff' do - describe 'View on environment' do - # TODO: Test - end - end -end diff --git a/spec/features/projects/view_on_env_spec.rb b/spec/features/projects/view_on_env_spec.rb new file mode 100644 index 00000000000..552705661a9 --- /dev/null +++ b/spec/features/projects/view_on_env_spec.rb @@ -0,0 +1,140 @@ +require 'spec_helper' + +describe 'View on environment', js: true do + include WaitForAjax + + let(:branch_name) { 'feature' } + let(:file_path) { 'files/ruby/feature.rb' } + let(:project) { create(:project) } + let(:user) { project.creator } + + before do + project.team << [user, :master] + end + + context 'when the branch has a route map' do + let(:route_map) do + <<-MAP.strip_heredoc + - source: /files/(.*)\\..*/ + public: '\\1' + MAP + end + + before do + Files::CreateService.new( + project, + user, + source_branch: branch_name, + target_branch: branch_name, + commit_message: "Add .gitlab/route-map.yml", + file_path: '.gitlab/route-map.yml', + file_content: route_map + ).execute + + # Update the file so that we still have a commit that will have a file on the environment + Files::UpdateService.new( + project, + user, + source_branch: branch_name, + target_branch: branch_name, + commit_message: "Update feature", + file_path: file_path, + file_content: "# Noop" + ).execute + end + + context 'and an active deployment' do + let(:sha) { project.commit(branch_name).sha } + let(:environment) { create(:environment, project: project, name: 'review/feature', external_url: 'http://feature.review.example.com') } + let!(:deployment) { create(:deployment, environment: environment, ref: branch_name, sha: sha) } + + context 'when visiting the diff of a merge request for the branch' do + let(:merge_request) { create(:merge_request, :simple, source_project: project, source_branch: branch_name) } + + before do + login_as(user) + + visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request) + + wait_for_ajax + end + + it 'has a "View on env" button' do + within '.diffs' do + expect(page).to have_link('View on feature.review.example.com', href: 'http://feature.review.example.com/ruby/feature') + end + end + end + + context 'when visiting a comparison for the branch' do + before do + login_as(user) + + visit namespace_project_compare_path(project.namespace, project, from: 'master', to: branch_name) + + wait_for_ajax + end + + it 'has a "View on env" button' do + expect(page).to have_link('View on feature.review.example.com', href: 'http://feature.review.example.com/ruby/feature') + end + end + + context 'when visiting a comparison for the commit' do + before do + login_as(user) + + visit namespace_project_compare_path(project.namespace, project, from: 'master', to: sha) + + wait_for_ajax + end + + it 'has a "View on env" button' do + expect(page).to have_link('View on feature.review.example.com', href: 'http://feature.review.example.com/ruby/feature') + end + end + + context 'when visiting a blob on the branch' do + before do + login_as(user) + + visit namespace_project_blob_path(project.namespace, project, File.join(branch_name, file_path)) + + wait_for_ajax + end + + it 'has a "View on env" button' do + expect(page).to have_link('View on feature.review.example.com', href: 'http://feature.review.example.com/ruby/feature') + end + end + + context 'when visiting a blob on the commit' do + before do + login_as(user) + + visit namespace_project_blob_path(project.namespace, project, File.join(sha, file_path)) + + wait_for_ajax + end + + it 'has a "View on env" button' do + expect(page).to have_link('View on feature.review.example.com', href: 'http://feature.review.example.com/ruby/feature') + end + end + + context 'when visiting the commit' do + before do + login_as(user) + + visit namespace_project_commit_path(project.namespace, project, sha) + + wait_for_ajax + end + + it 'has a "View on env" button' do + expect(page).to have_link('View on feature.review.example.com', href: 'http://feature.review.example.com/ruby/feature') + end + end + end + end +end -- cgit v1.2.1 From 9d7c5e75841eff48217487b3acda56cf265a2aef Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Mon, 6 Feb 2017 18:06:46 -0600 Subject: Address feedback --- spec/features/projects/view_on_env_spec.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'spec/features') diff --git a/spec/features/projects/view_on_env_spec.rb b/spec/features/projects/view_on_env_spec.rb index 552705661a9..ce5c5f21167 100644 --- a/spec/features/projects/view_on_env_spec.rb +++ b/spec/features/projects/view_on_env_spec.rb @@ -5,11 +5,11 @@ describe 'View on environment', js: true do let(:branch_name) { 'feature' } let(:file_path) { 'files/ruby/feature.rb' } - let(:project) { create(:project) } + let(:project) { create(:project, :repository) } let(:user) { project.creator } before do - project.team << [user, :master] + project.add_master(user) end context 'when the branch has a route map' do @@ -24,7 +24,7 @@ describe 'View on environment', js: true do Files::CreateService.new( project, user, - source_branch: branch_name, + start_branch: branch_name, target_branch: branch_name, commit_message: "Add .gitlab/route-map.yml", file_path: '.gitlab/route-map.yml', @@ -35,7 +35,7 @@ describe 'View on environment', js: true do Files::UpdateService.new( project, user, - source_branch: branch_name, + start_branch: branch_name, target_branch: branch_name, commit_message: "Update feature", file_path: file_path, -- cgit v1.2.1