Skip to content
Snippets Groups Projects
Commit 5c261439 authored by Mark Lapierre's avatar Mark Lapierre
Browse files

Refactor protected branch resource and spec

Rename Resource::Branch to Resource::ProtectedBranch to be clear that
it configures the settings to protect a branch, rather than just
creating a new branch.

Make branch an attribute to make it clear creating the branch is not
the main responsibility of the class.

Initialize the project with a readme so that the resource only has
to push once when it creates a branch.

Stop ProjectPush from visiting the project page so that it doesn't
have to use the browser UI.
parent c0b9e50a
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -54,7 +54,7 @@ module QA
autoload :MergeRequestFromFork, 'qa/resource/merge_request_from_fork'
autoload :DeployKey, 'qa/resource/deploy_key'
autoload :DeployToken, 'qa/resource/deploy_token'
autoload :Branch, 'qa/resource/branch'
autoload :ProtectedBranch, 'qa/resource/protected_branch'
autoload :CiVariable, 'qa/resource/ci_variable'
autoload :Runner, 'qa/resource/runner'
autoload :PersonalAccessToken, 'qa/resource/personal_access_token'
Loading
Loading
Loading
Loading
@@ -2,13 +2,24 @@
 
module QA
module Resource
class Branch < Base
attr_accessor :project, :branch_name,
:allow_to_push, :allow_to_merge, :protected
class ProtectedBranch < Base
attr_accessor :branch_name, :allow_to_push, :allow_to_merge, :protected
 
attribute :project do
Project.fabricate! do |resource|
Project.fabricate_via_api! do |resource|
resource.name = 'protected-branch-project'
resource.initialize_with_readme = true
end
end
attribute :branch do
Repository::ProjectPush.fabricate! do |project_push|
project_push.project = project
project_push.file_name = 'new_file.md'
project_push.commit_message = 'Add new file'
project_push.branch_name = branch_name
project_push.new_branch = true
project_push.remote_branch = @branch_name
end
end
 
Loading
Loading
@@ -20,32 +31,16 @@ module QA
end
 
def fabricate!
project.visit!
Repository::ProjectPush.fabricate! do |resource|
resource.project = project
resource.file_name = 'kick-off.txt'
resource.commit_message = 'First commit'
end
populate(:branch)
 
branch = Repository::ProjectPush.fabricate! do |resource|
resource.project = project
resource.file_name = 'README.md'
resource.commit_message = 'Add readme'
resource.branch_name = 'master'
resource.new_branch = false
resource.remote_branch = @branch_name
end
Page::Project::Show.perform do |page|
page.wait { page.has_content?(branch_name) }
end
project.wait_for_push_new_branch @branch_name
 
# The upcoming process will make it access the Protected Branches page,
# select the already created branch and protect it according
# to `allow_to_push` variable.
return branch unless @protected
 
project.visit!
Page::Project::Menu.perform(&:go_to_repository_settings)
 
Page::Project::Settings::Repository.perform do |setting|
Loading
Loading
Loading
Loading
@@ -33,7 +33,6 @@ module QA
def fabricate!
super
project.wait_for_push @commit_message if @wait_for_push
project.visit!
end
end
end
Loading
Loading
Loading
Loading
@@ -8,6 +8,7 @@ module QA
let(:project) do
Resource::Project.fabricate! do |resource|
resource.name = 'protected-branch-project'
resource.initialize_with_readme = true
end
end
 
Loading
Loading
@@ -42,7 +43,7 @@ module QA
end
 
def create_protected_branch(allow_to_push:)
Resource::Branch.fabricate! do |resource|
Resource::ProtectedBranch.fabricate! do |resource|
resource.branch_name = branch_name
resource.project = project
resource.allow_to_push = allow_to_push
Loading
Loading
Loading
Loading
@@ -58,7 +58,7 @@ module QA
paths:
- my-artifacts/
EOF
end
end.project.visit!
 
expect(page).to have_content('Add .gitlab-ci.yml')
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment