From 4c56af4ca427e248fdddf3f0016f3522a002a80f Mon Sep 17 00:00:00 2001
From: kikito
Date: Tue, 1 Sep 2015 20:10:36 +0200
Subject: [PATCH 1/3] Adds Faker gem
---
Gemfile | 1 +
Gemfile.lock | 6 +++---
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/Gemfile b/Gemfile
index ce51295bc..f3c9fdffe 100644
--- a/Gemfile
+++ b/Gemfile
@@ -66,6 +66,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 922a30d37..da7f397f3 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)
@@ -408,6 +410,7 @@ DEPENDENCIES
devise
email_spec
factory_girl_rails
+ faker
foundation-rails
foundation_rails_helper
fuubar
@@ -438,6 +441,3 @@ DEPENDENCIES
uglifier (>= 1.3.0)
unicorn
web-console (~> 2.0)
-
-BUNDLED WITH
- 1.10.6
From 55bab0e535dce4d2063a9e8d8dd3921cad6fa4b6 Mon Sep 17 00:00:00 2001
From: kikito
Date: Tue, 1 Sep 2015 20:11:21 +0200
Subject: [PATCH 2/3] 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
From 62415991c04f6b5eaeec982000fbdd3848863269 Mon Sep 17 00:00:00 2001
From: kikito
Date: Tue, 1 Sep 2015 20:11:45 +0200
Subject: [PATCH 3/3] Fixes an issue found on comments using the dev_seed
---
app/models/comment.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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