Add labeled issues seed
This commit is contained in:
parent
1b1475cba4
commit
09de6daf85
1 changed files with 103 additions and 0 deletions
103
db/fixtures/development/22_labeled_issues_seed.rb
Normal file
103
db/fixtures/development/22_labeled_issues_seed.rb
Normal file
|
@ -0,0 +1,103 @@
|
|||
# Creates a project with labeled issues for an user.
|
||||
# Run this single seed file using: rake db:seed_fu FILTER=labeled USER_ID=74.
|
||||
# If an USER_ID is not provided it will use the last created user.
|
||||
require './spec/support/sidekiq'
|
||||
|
||||
class Gitlab::Seeder::LabeledIssues
|
||||
include ::Gitlab::Utils
|
||||
|
||||
def initialize(user)
|
||||
@user = user
|
||||
end
|
||||
|
||||
def seed!
|
||||
Sidekiq::Testing.inline! do
|
||||
group = create_group
|
||||
|
||||
create_projects(group)
|
||||
create_labels(group)
|
||||
create_issues(group)
|
||||
end
|
||||
|
||||
print '.'
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_group
|
||||
group_name = "group_of_#{@user.username}_#{SecureRandom.hex(4)}"
|
||||
|
||||
group_params = {
|
||||
name: group_name,
|
||||
path: group_name,
|
||||
description: FFaker::Lorem.sentence
|
||||
}
|
||||
|
||||
Groups::CreateService.new(@user, group_params).execute
|
||||
end
|
||||
|
||||
def create_projects(group)
|
||||
5.times do
|
||||
project_name = "project_#{SecureRandom.hex(6)}"
|
||||
|
||||
params = {
|
||||
namespace_id: group.id,
|
||||
name: project_name,
|
||||
description: FFaker::Lorem.sentence,
|
||||
visibility_level: Gitlab::VisibilityLevel.values.sample
|
||||
}
|
||||
|
||||
Projects::CreateService.new(@user, params).execute
|
||||
end
|
||||
end
|
||||
|
||||
def create_labels(group)
|
||||
group.projects.each do |project|
|
||||
5.times do
|
||||
label_title = FFaker::Vehicle.model
|
||||
Labels::CreateService.new(title: label_title, color: "#69D100").execute(project: project)
|
||||
end
|
||||
end
|
||||
|
||||
10.times do
|
||||
label_title = FFaker::Product.brand
|
||||
Labels::CreateService.new(title: label_title).execute(group: group)
|
||||
end
|
||||
end
|
||||
|
||||
def create_issues(group)
|
||||
# Get only group labels
|
||||
group_labels =
|
||||
LabelsFinder.new(@user, group_id: group.id).execute.where.not(group_id: nil)
|
||||
|
||||
group.projects.each do |project|
|
||||
label_ids = project.labels.pluck(:id).sample(5)
|
||||
label_ids.push(*group.labels.sample(4))
|
||||
|
||||
20.times do
|
||||
issue_params = {
|
||||
title: FFaker::Lorem.sentence(6),
|
||||
description: FFaker::Lorem.sentence,
|
||||
state: 'opened',
|
||||
label_ids: label_ids
|
||||
|
||||
}
|
||||
|
||||
Issues::CreateService.new(project, @user, issue_params).execute if project.project_feature.present?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Gitlab::Seeder.quiet do
|
||||
user_id = ENV['USER_ID']
|
||||
|
||||
user =
|
||||
if user_id.present?
|
||||
User.find(user_id)
|
||||
else
|
||||
User.last
|
||||
end
|
||||
|
||||
Gitlab::Seeder::LabeledIssues.new(user).seed!
|
||||
end
|
Loading…
Reference in a new issue