Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'db/fixtures/development/36_achievements.rb')
-rw-r--r--db/fixtures/development/36_achievements.rb68
1 files changed, 68 insertions, 0 deletions
diff --git a/db/fixtures/development/36_achievements.rb b/db/fixtures/development/36_achievements.rb
new file mode 100644
index 00000000000..5798fd2d6c7
--- /dev/null
+++ b/db/fixtures/development/36_achievements.rb
@@ -0,0 +1,68 @@
+# frozen_string_literal: true
+
+class Gitlab::Seeder::Achievements
+ attr_reader :group, :user_ids, :maintainer_ids
+
+ def initialize(group, user_ids)
+ @group = group
+ @maintainer_ids = group.members.maintainers.pluck_user_ids
+ @maintainer_ids << User.admins.first.id
+ @user_ids = user_ids
+ end
+
+ def seed!
+ achievement_ids = Achievements::Achievement.pluck(:id)
+ achievement_ids = seed_achievements if achievement_ids.empty?
+
+ user_ids.reverse.each_with_index do |user_id, user_index|
+ (user_index + 1).times do |achievement_index|
+ ::Achievements::UserAchievement.create!(
+ user_id: user_id,
+ achievement_id: achievement_ids[achievement_index],
+ awarded_by_user_id: maintainer_ids.sample,
+ revoked_by_user_id: achievement_index == 0 ? maintainer_ids.sample : nil,
+ revoked_at: achievement_index == 0 ? DateTime.current : nil
+ )
+
+ print '.'
+ end
+ end
+ end
+
+ def seed_achievements
+ achievement_ids = []
+
+
+ ['revoked', 'first mr', 'hero', 'legend'].each do |achievement_name|
+ achievement_ids << ::Achievements::Achievement.create!(
+ namespace_id: group.id,
+ name: achievement_name,
+ description: achievement_name == 'hero' ? 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry''s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.' : nil,
+ avatar: seed_avatar(achievement_name)
+ ).id
+
+ print '.'
+ end
+
+ achievement_ids
+ end
+
+ def seed_avatar(achievement_name)
+ case achievement_name
+ when 'first mr'
+ File.new(Rails.root.join('db', 'fixtures', 'development', 'rocket.jpg'), 'r')
+ when 'hero'
+ File.new(Rails.root.join('db', 'fixtures', 'development', 'heart.png'), 'r')
+ end
+ end
+end
+
+Gitlab::Seeder.quiet do
+ puts "\nGenerating ahievements"
+
+ group = Group.first
+ users = User.first(4).pluck(:id)
+ Gitlab::Seeder::Achievements.new(group, users).seed!
+rescue => e
+ warn "\nError seeding achievements: #{e}"
+end