generate_comments_for

in lib/tasks/db.rake [29:82]


  def generate_comments_for(commentable_id, num_threads=THREADS_PER_COMMENTABLE, num_top_comments=TOP_COMMENTS_PER_THREAD, num_subcomments=ADDITIONAL_COMMENTS_PER_THREAD)
    level_limit = CommentService.config['level_limit']


    users = User.all.to_a

    puts "Generating threads and comments for #{commentable_id}..."

    threads = []
    top_comments = []
    additional_comments = []

    num_threads.times do
      inner_top_comments = []

      
      comment_thread = FactoryGirl::create(:comment_thread, commentable_id: commentable_id, author: users.sample, course_id: COURSE_ID)
      threads << comment_thread

      
      users.sample(3).each { |user| user.subscribe(comment_thread) }

      
      (1 + rand(num_top_comments)).times do
        endorsed = [true, false].sample
        comment = FactoryGirl::create(:comment, author: users.sample, comment_thread: comment_thread, endorsed: endorsed, course_id: COURSE_ID)
        top_comments << comment
        inner_top_comments << comment
      end

      
      parent_comments = inner_top_comments
      (level_limit-1).times do
        current_level_comments = []
        (1 + rand(num_subcomments)).times do
          parent = parent_comments.sample
          endorsed = [true, false].sample
          child = FactoryGirl::create(:comment, author: users.sample, parent: parent, endorsed: endorsed)
          current_level_comments << child
        end
        parent_comments = current_level_comments
      end
    end

    puts 'voting'

    (threads + top_comments + additional_comments).each do |c|
      users.each do |user|
        user.vote(c, [:up, :down].sample)
      end
    end
    puts 'finished'
  end