Add tests for plain diff/email patch options
Add spec file using before(:context) to reduce test time. With testing almost identical things, unnecessary to make them completely atomic. Includes two helper methods. Since the raw_content method is the only function needed on that page, created the method in the spec instead of adding another page object. Setup new project/commit page object and update project/show to add go_to_commit method. The go_to_commit method is near duplicate of go_to_file method, but decided to split them off to reduce overall refactoring and simplify language. Also add selectors to commit box partial and update qa.rb to load new page object.
This commit is contained in:
parent
bdcd37610a
commit
12c358f1b7
5 changed files with 101 additions and 4 deletions
|
@ -28,7 +28,7 @@
|
|||
= link_to project_tree_path(@project, @commit), class: "btn btn-default append-right-10 d-none d-sm-none d-md-inline" do
|
||||
#{ _('Browse files') }
|
||||
.dropdown.inline
|
||||
%a.btn.btn-default.dropdown-toggle{ data: { toggle: "dropdown" } }
|
||||
%a.btn.btn-default.dropdown-toggle.qa-options-button{ data: { toggle: "dropdown" } }
|
||||
%span= _('Options')
|
||||
= icon('caret-down')
|
||||
%ul.dropdown-menu.dropdown-menu-right
|
||||
|
@ -48,8 +48,8 @@
|
|||
%li.dropdown-header
|
||||
#{ _('Download') }
|
||||
- unless @commit.parents.length > 1
|
||||
%li= link_to s_("DownloadCommit|Email Patches"), project_commit_path(@project, @commit, format: :patch)
|
||||
%li= link_to s_("DownloadCommit|Plain Diff"), project_commit_path(@project, @commit, format: :diff)
|
||||
%li= link_to s_("DownloadCommit|Email Patches"), project_commit_path(@project, @commit, format: :patch), class: "qa-email-patches"
|
||||
%li= link_to s_("DownloadCommit|Plain Diff"), project_commit_path(@project, @commit, format: :diff), class: "qa-plain-diff"
|
||||
|
||||
.commit-box{ data: { project_path: project_path(@project) } }
|
||||
%h3.commit-title
|
||||
|
|
4
qa/qa.rb
4
qa/qa.rb
|
@ -158,6 +158,10 @@ module QA
|
|||
autoload :Activity, 'qa/page/project/activity'
|
||||
autoload :Menu, 'qa/page/project/menu'
|
||||
|
||||
module Commit
|
||||
autoload :Show, 'qa/page/project/commit/show'
|
||||
end
|
||||
|
||||
module Import
|
||||
autoload :Github, 'qa/page/project/import/github'
|
||||
end
|
||||
|
|
27
qa/qa/page/project/commit/show.rb
Normal file
27
qa/qa/page/project/commit/show.rb
Normal file
|
@ -0,0 +1,27 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module QA
|
||||
module Page
|
||||
module Project
|
||||
module Commit
|
||||
class Show < Page::Base
|
||||
view 'app/views/projects/commit/_commit_box.html.haml' do
|
||||
element :options_button
|
||||
element :email_patches
|
||||
element :plain_diff
|
||||
end
|
||||
|
||||
def select_email_patches
|
||||
click_element :options_button
|
||||
click_element :email_patches
|
||||
end
|
||||
|
||||
def select_plain_diff
|
||||
click_element :options_button
|
||||
click_element :plain_diff
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -72,9 +72,14 @@ module QA
|
|||
end
|
||||
end
|
||||
|
||||
def go_to_commit(commit_msg)
|
||||
within_element(:file_tree) do
|
||||
click_on commit_msg
|
||||
end
|
||||
end
|
||||
|
||||
def go_to_new_issue
|
||||
click_element :new_menu_toggle
|
||||
|
||||
click_link 'New issue'
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module QA
|
||||
context 'Create' do
|
||||
describe 'Commit data' do
|
||||
before(:context) do
|
||||
Runtime::Browser.visit(:gitlab, Page::Main::Login)
|
||||
Page::Main::Login.perform(&:sign_in_using_credentials)
|
||||
|
||||
@project = Resource::Repository::ProjectPush.fabricate! do |push|
|
||||
push.file_name = 'README.md'
|
||||
push.file_content = '# This is a test project'
|
||||
push.commit_message = 'Add README.md'
|
||||
end
|
||||
|
||||
# first file added has no parent commit, thus no diff data
|
||||
# add second file to repo to enable diff from initial commit
|
||||
@commit_message = 'Add second file'
|
||||
|
||||
@project.visit!
|
||||
Page::Project::Show.perform(&:create_new_file!)
|
||||
Page::File::Form.perform do |f|
|
||||
f.add_name('second')
|
||||
f.add_content('second file content')
|
||||
f.add_commit_message(@commit_message)
|
||||
f.commit_changes
|
||||
end
|
||||
end
|
||||
|
||||
def view_commit
|
||||
@project.visit!
|
||||
Page::Project::Show.perform do |page|
|
||||
page.go_to_commit(@commit_message)
|
||||
end
|
||||
end
|
||||
|
||||
def raw_content
|
||||
find('pre').text
|
||||
end
|
||||
|
||||
it 'user views raw email patch' do
|
||||
view_commit
|
||||
|
||||
Page::Project::Commit::Show.perform(&:select_email_patches)
|
||||
|
||||
expect(page).to have_content('From: Administrator <admin@example.com>')
|
||||
expect(page).to have_content('Subject: [PATCH] Add second file')
|
||||
expect(page).to have_content('diff --git a/second b/second')
|
||||
end
|
||||
|
||||
it 'user views raw commit diff' do
|
||||
view_commit
|
||||
|
||||
Page::Project::Commit::Show.perform(&:select_plain_diff)
|
||||
|
||||
expect(raw_content).to start_with('diff --git a/second b/second')
|
||||
expect(page).to have_content('+second file content')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue