diff --git a/Gemfile b/Gemfile index 3f7d3da35..70a599bf6 100644 --- a/Gemfile +++ b/Gemfile @@ -67,6 +67,7 @@ group :development, :test do gem "capistrano-rails", '1.1.3', require: false gem "capistrano-rvm", require: false gem "bullet" + gem "faker" end group :test do diff --git a/Gemfile.lock b/Gemfile.lock index 206e1173e..bf7f03d33 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -140,6 +140,8 @@ GEM factory_girl_rails (4.5.0) factory_girl (~> 4.5.0) railties (>= 3.0.0) + faker (1.5.0) + i18n (~> 0.5) faraday (0.9.1) multipart-post (>= 1.2, < 3) foundation-rails (5.5.2.1) @@ -409,6 +411,7 @@ DEPENDENCIES devise email_spec factory_girl_rails + faker foundation-rails foundation_rails_helper fuubar @@ -440,6 +443,3 @@ DEPENDENCIES uglifier (>= 1.3.0) unicorn web-console (~> 2.0) - -BUNDLED WITH - 1.10.6 diff --git a/app/models/comment.rb b/app/models/comment.rb index c23c5c993..77cbd166e 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -9,7 +9,7 @@ class Comment < ActiveRecord::Base validates :body, presence: true validates :user, presence: true - belongs_to :commentable, polymorphic: true, counter_cache: true + belongs_to :commentable, -> { with_hidden }, polymorphic: true, counter_cache: true belongs_to :user, -> { with_hidden } has_many :flags, :as => :flaggable 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