post disapprovals: fix tests and API create action.

* Fix tests.
* Fix create action in API (couldn't redirect to show action).
* Clean up user initialization.
This commit is contained in:
evazion
2020-02-19 15:20:39 -06:00
parent 0aa05a116f
commit f54470ddfb
5 changed files with 6 additions and 10 deletions

View File

@@ -5,7 +5,7 @@ class PostDisapprovalsController < ApplicationController
def create
cookies.permanent[:moderated] = Time.now.to_i
@post_disapproval = PostDisapproval.create(post_disapproval_params)
@post_disapproval = PostDisapproval.create(user: CurrentUser.user, **post_disapproval_params)
respond_with(@post_disapproval)
end

View File

@@ -3,7 +3,6 @@ class PostDisapproval < ApplicationRecord
belongs_to :post
belongs_to :user
after_initialize :initialize_attributes, if: :new_record?
validates_uniqueness_of :post_id, :scope => [:user_id], :message => "have already hidden this post"
validates_inclusion_of :reason, :in => %w(legacy breaks_rules poor_quality disinterest)
@@ -13,10 +12,6 @@ class PostDisapproval < ApplicationRecord
scope :poor_quality, -> {where(:reason => "poor_quality")}
scope :disinterest, -> {where(:reason => ["disinterest", "legacy"])}
def initialize_attributes
self.user_id ||= CurrentUser.user.id
end
def self.prune!
PostDisapproval.where("post_id in (select _.post_id from post_disapprovals _ where _.created_at < ?)", DELETION_THRESHOLD.ago).delete_all
end

View File

@@ -205,7 +205,7 @@ Rails.application.routes.draw do
resources :post_appeals
resources :post_flags
resources :post_approvals, only: [:index]
resources :post_disapprovals, only: [:create, :index]
resources :post_disapprovals, only: [:create, :show, :index]
resources :post_versions, :only => [:index, :search] do
member do
put :undo

View File

@@ -1,5 +1,6 @@
FactoryBot.define do
factory(:post_disapproval) do
user
reason { %w(breaks_rules poor_quality disinterest).sample }
message { FFaker::Lorem.sentence }
end

View File

@@ -14,7 +14,7 @@ class PostDisapprovalsControllerTest < ActionDispatch::IntegrationTest
context "create action" do
should "render" do
assert_difference("PostDisapproval.count", 1) do
post_auth moderator_post_disapprovals_path, @admin, params: { post_disapproval: { post_id: @post.id, reason: "breaks_rules" }, format: "js" }
post_auth post_disapprovals_path, @admin, params: { post_disapproval: { post_id: @post.id, reason: "breaks_rules" }, format: "js" }
end
assert_response :success
end
@@ -22,7 +22,7 @@ class PostDisapprovalsControllerTest < ActionDispatch::IntegrationTest
context "for json" do
should "render" do
assert_difference("PostDisapproval.count", 1) do
post_auth moderator_post_disapprovals_path, @admin, params: { post_disapproval: { post_id: @post.id, reason: "breaks_rules" }, format: "json" }
post_auth post_disapprovals_path, @admin, params: { post_disapproval: { post_id: @post.id, reason: "breaks_rules" }, format: "json" }
end
assert_response :success
end
@@ -32,7 +32,7 @@ class PostDisapprovalsControllerTest < ActionDispatch::IntegrationTest
context "index action" do
should "render" do
disapproval = FactoryBot.create(:post_disapproval, post: @post)
get_auth moderator_post_disapprovals_path, @admin
get_auth post_disapprovals_path, @admin
assert_response :success
end