From 55bab0e535dce4d2063a9e8d8dd3921cad6fa4b6 Mon Sep 17 00:00:00 2001 From: kikito Date: Tue, 1 Sep 2015 20:11:21 +0200 Subject: [PATCH] Adds a rake db:dev_seeds task --- db/dev_seeds.rb | 136 ++++++++++++++++++++++++++++++++++++++++++++++ lib/tasks/db.rake | 6 ++ 2 files changed, 142 insertions(+) create mode 100644 db/dev_seeds.rb create mode 100644 lib/tasks/db.rake diff --git a/db/dev_seeds.rb b/db/dev_seeds.rb new file mode 100644 index 000000000..d2a4d4367 --- /dev/null +++ b/db/dev_seeds.rb @@ -0,0 +1,136 @@ +require 'database_cleaner' + +DatabaseCleaner.clean_with :truncation + +puts "Creating Settings" +Setting.create(key: 'official_level_0_name', value: 'No cargo público') +Setting.create(key: 'official_level_1_name', value: 'Empleados públicos') +Setting.create(key: 'official_level_2_name', value: 'Organización Municipal') +Setting.create(key: 'official_level_3_name', value: 'Directores generales') +Setting.create(key: 'official_level_4_name', value: 'Concejales') +Setting.create(key: 'official_level_5_name', value: 'Alcaldesa') + +puts "Creating Users" + +def create_user(email, username = Faker::Name.name) + pwd = '12345678' + puts " #{username}" + User.create!(username: username, email: email, password: pwd, password_confirmation: pwd, confirmed_at: Time.now) +end + +admin = create_user('admin@madrid.es', 'admin') +admin.create_administrator + +moderator = create_user('mod@madrid.es', 'mod') +moderator.create_moderator + +(1..10).each do |i| + org_name = Faker::Company.name + org_user = create_user("org#{i}@madrid.es", org_name) + org = org_user.create_organization(name: org_name) + + verified = [true, false].sample + if verified then + org.verify + else + org.reject + end +end + +(1..5).each do |i| + official = create_user("official#{i}@madrid.es") + official.update(official_level: i, official_position: "Official position #{i}") +end + +(1..40).each do |i| + create_user("user#{i}@madrid.es") +end + +org_user_ids = User.organizations.pluck(:id) +not_org_users = User.where(['users.id NOT IN(?)', org_user_ids]) + + +puts "Creating Debates" + +(1..30).each do |i| + author = User.reorder("RANDOM()").first + description = "

#{Faker::Lorem.paragraphs.join('

')}

" + debate = Debate.create!(author: author, + title: Faker::Lorem.sentence(3), + description: description, + terms_of_service: "1") + puts " #{debate.title}" +end + + +puts "Commenting Debates" + +(1..100).each do |i| + author = User.reorder("RANDOM()").first + debate = Debate.reorder("RANDOM()").first + Comment.create!(user: author, + commentable: debate, + body: Faker::Lorem.sentence) +end + + +puts "Commenting Comments" + +(1..100).each do |i| + author = User.reorder("RANDOM()").first + parent = Comment.reorder("RANDOM()").first + comment = Comment.create!(user: author, + commentable_id: parent.commentable_id, + commentable_type: parent.commentable_type, + body: Faker::Lorem.sentence) + comment.move_to_child_of(parent) +end + + +puts "Voting Debates & Comments" + +(1..100).each do |i| + voter = not_org_users.reorder("RANDOM()").first + vote = [true, false].sample + debate = Debate.reorder("RANDOM()").first + debate.vote_by(voter: voter, vote: vote) +end + +(1..100).each do |i| + voter = not_org_users.reorder("RANDOM()").first + vote = [true, false].sample + comment = Comment.reorder("RANDOM()").first + comment.vote_by(voter: voter, vote: vote) +end + + +puts "Flagging Debates & Comments" + +(1..40).each do |i| + debate = Debate.reorder("RANDOM()").first + flagger = User.where(["users.id <> ?", debate.author_id]).reorder("RANDOM()").first + Flag.flag(flagger, debate) +end + +(1..40).each do |i| + comment = Comment.reorder("RANDOM()").first + flagger = User.where(["users.id <> ?", comment.user_id]).reorder("RANDOM()").first + Flag.flag(flagger, comment) +end + + +puts "Ignoring flags in Debates & comments" + +Debate.flagged.reorder("RANDOM()").limit(10).each(&:ignore_flag) +Comment.flagged.reorder("RANDOM()").limit(20).each(&:ignore_flag) + + +puts "Hiding debates & comments" + +Debate.with_hidden.flagged.reorder("RANDOM()").limit(5).each(&:hide) +Comment.with_hidden.flagged.reorder("RANDOM()").limit(30).each{ |c| c.hide rescue nil } + + + + + diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake new file mode 100644 index 000000000..3683144db --- /dev/null +++ b/lib/tasks/db.rake @@ -0,0 +1,6 @@ +namespace :db do + desc "Resets the database and loads it from db/dev_seeds.rb" + task :dev_seed do + load(Rails.root.join("db", "dev_seeds.rb")) + end +end