From db28db414c8ab3d253294e430cd99d14499fad2e Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Mon, 3 Sep 2018 15:21:15 +0100 Subject: [PATCH] Allow repositories to be programmatically built in the specs --- spec/factories/projects.rb | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb index 1215b04913e..17e457c04a5 100644 --- a/spec/factories/projects.rb +++ b/spec/factories/projects.rb @@ -130,6 +130,33 @@ FactoryBot.define do end end + # Build a custom repository by specifying a hash of `filename => content` in + # the transient `files` attribute. Each file will be created in its own + # commit, operating against the master branch. So, the following call: + # + # create(:project, :custom_repo, files: { 'foo/a.txt' => 'foo', 'b.txt' => bar' }) + # + # will create a repository containing two files, and two commits, in master + trait :custom_repo do + transient do + files {} + end + + after :create do |project, evaluator| + raise "Failed to create repository!" unless project.create_repository + + evaluator.files.each do |filename, content| + project.repository.create_file( + project.creator, + filename, + content, + message: "Automatically created file #{filename}", + branch_name: 'master' + ) + end + end + end + # Test repository - https://gitlab.com/gitlab-org/gitlab-test trait :repository do test_repo