Commit d7cbeda5 authored by Mark Lapierre's avatar Mark Lapierre

Fabricate a file via the API

parent e59c3f8e
...@@ -3,9 +3,12 @@ ...@@ -3,9 +3,12 @@
module QA module QA
module Resource module Resource
class File < Base class File < Base
attr_accessor :name, attr_accessor :author_email,
:author_name,
:branch,
:content, :content,
:commit_message :commit_message,
:name
attribute :project do attribute :project do
Project.fabricate! do |resource| Project.fabricate! do |resource|
...@@ -31,6 +34,30 @@ module QA ...@@ -31,6 +34,30 @@ module QA
page.commit_changes page.commit_changes
end end
end end
def resource_web_url(resource)
super
rescue ResourceURLMissingError
# this particular resource does not expose a web_url property
end
def api_get_path
"/projects/#{CGI.escape(project.path_with_namespace)}/repository/files/#{CGI.escape(@name)}"
end
def api_post_path
api_get_path
end
def api_post_body
{
branch: @branch || "master",
author_email: @author_email || Runtime::User.default_email,
author_name: @author_name || Runtime::User.username,
content: content,
commit_message: commit_message
}
end
end end
end end
end end
...@@ -3,13 +3,16 @@ ...@@ -3,13 +3,16 @@
module QA module QA
context 'Create' do context 'Create' do
# failure reported: https://gitlab.com/gitlab-org/quality/nightly/issues/42 # failure reported: https://gitlab.com/gitlab-org/quality/nightly/issues/42
# also failing in staging until the fix is picked into the next release:
# https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/24533
describe 'Commit data', :quarantine do describe 'Commit data', :quarantine do
before(:context) do before(:context) do
Runtime::Browser.visit(:gitlab, Page::Main::Login) Runtime::Browser.visit(:gitlab, Page::Main::Login)
Page::Main::Login.perform(&:sign_in_using_credentials) Page::Main::Login.perform(&:sign_in_using_credentials)
# Get the user's details to confirm they're included in the email patch
@user = Resource::User.fabricate_via_api! do |user|
user.username = Runtime::User.username
end
project_push = Resource::Repository::ProjectPush.fabricate! do |push| project_push = Resource::Repository::ProjectPush.fabricate! do |push|
push.file_name = 'README.md' push.file_name = 'README.md'
push.file_content = '# This is a test project' push.file_content = '# This is a test project'
...@@ -21,12 +24,13 @@ module QA ...@@ -21,12 +24,13 @@ module QA
# add second file to repo to enable diff from initial commit # add second file to repo to enable diff from initial commit
@commit_message = 'Add second file' @commit_message = 'Add second file'
Page::Project::Show.perform(&:create_new_file!) Resource::File.fabricate_via_api! do |file|
Page::File::Form.perform do |f| file.project = @project
f.add_name('second') file.name = 'second'
f.add_content('second file content') file.content = 'second file content'
f.add_commit_message(@commit_message) file.commit_message = @commit_message
f.commit_changes file.author_name = @user.name
file.author_email = @user.public_email
end end
end end
...@@ -42,15 +46,11 @@ module QA ...@@ -42,15 +46,11 @@ module QA
end end
it 'user views raw email patch' do it 'user views raw email patch' do
user = Resource::User.fabricate_via_api! do |user|
user.username = Runtime::User.username
end
view_commit view_commit
Page::Project::Commit::Show.perform(&:select_email_patches) Page::Project::Commit::Show.perform(&:select_email_patches)
expect(page).to have_content("From: #{user.name} <#{user.public_email}>") expect(page).to have_content("From: #{@user.name} <#{@user.public_email}>")
expect(page).to have_content('Subject: [PATCH] Add second file') expect(page).to have_content('Subject: [PATCH] Add second file')
expect(page).to have_content('diff --git a/second b/second') expect(page).to have_content('diff --git a/second b/second')
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