From cb09b6661d037bffef6c951b4bd914e43bb772fa Mon Sep 17 00:00:00 2001 From: evazion Date: Sun, 14 May 2017 18:49:57 -0500 Subject: [PATCH] Add /post_replacements.json, /posts/1234/replacements.json. --- .../post_replacements_controller.rb | 11 ++++++++ app/models/post_replacement.rb | 28 +++++++++++++++++++ config/routes.rb | 2 ++ test/factories/post_replacement.rb | 6 ++++ .../post_replacements_controller_test.rb | 21 ++++++++++++++ 5 files changed, 68 insertions(+) create mode 100644 app/controllers/post_replacements_controller.rb create mode 100644 test/factories/post_replacement.rb create mode 100644 test/functional/post_replacements_controller_test.rb diff --git a/app/controllers/post_replacements_controller.rb b/app/controllers/post_replacements_controller.rb new file mode 100644 index 000000000..2858e67ae --- /dev/null +++ b/app/controllers/post_replacements_controller.rb @@ -0,0 +1,11 @@ +class PostReplacementsController < ApplicationController + respond_to :html, :xml, :json + before_filter :approver_only, except: [:index] + + def index + params[:search][:post_id] = params.delete(:post_id) if params.has_key?(:post_id) + @post_replacements = PostReplacement.search(params[:search]).paginate(params[:page], limit: params[:limit]) + + respond_with(@post_replacements) + end +end diff --git a/app/models/post_replacement.rb b/app/models/post_replacement.rb index 2c2407f74..1cfa6f93a 100644 --- a/app/models/post_replacement.rb +++ b/app/models/post_replacement.rb @@ -61,4 +61,32 @@ class PostReplacement < ActiveRecord::Base post.distribute_files post.update_iqdb_async end + + module SearchMethods + def search(params = {}) + q = all + + if params[:creator_id].present? + q = q.where(creator_id: params[:creator_id].split(",").map(&:to_i)) + end + + if params[:creator_name].present? + q = q.where(creator_name: User.name_to_id(params[:creator_name])) + end + + if params[:id].present? + q = q.where(id: params[:id].split(",").map(&:to_i)) + end + + if params[:post_id].present? + q = q.where(post_id: params[:post_id].split(",").map(&:to_i)) + end + + q = q.order("created_at DESC") + + q + end + end + + extend SearchMethods end diff --git a/config/routes.rb b/config/routes.rb index c40e0c1a4..78cf4d3c7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -199,6 +199,7 @@ Rails.application.routes.draw do end resources :posts do resources :events, :only => [:index], :controller => "post_events" + resources :replacements, :only => [:index], :controller => "post_replacements" resource :artist_commentary, :only => [:index, :show] do collection { put :create_or_update } member { put :revert } @@ -217,6 +218,7 @@ Rails.application.routes.draw do end resources :post_appeals resources :post_flags + resources :post_replacements, :only => [:index] resources :post_versions, :only => [:index, :search] do member do put :undo diff --git a/test/factories/post_replacement.rb b/test/factories/post_replacement.rb new file mode 100644 index 000000000..201e09e97 --- /dev/null +++ b/test/factories/post_replacement.rb @@ -0,0 +1,6 @@ +FactoryGirl.define do + factory(:post_replacement) do + original_url { FFaker::Internet.http_url } + replacement_url { FFaker::Internet.http_url } + end +end diff --git a/test/functional/post_replacements_controller_test.rb b/test/functional/post_replacements_controller_test.rb new file mode 100644 index 000000000..aa0ef157d --- /dev/null +++ b/test/functional/post_replacements_controller_test.rb @@ -0,0 +1,21 @@ +require 'test_helper' + +class PostReplacementsControllerTest < ActionController::TestCase + context "The post replacements controller" do + setup do + @user = FactoryGirl.create(:user, can_approve_posts: true) + CurrentUser.user = @user + CurrentUser.ip_addr = "127.0.0.1" + + @post = FactoryGirl.create(:post) + @post_replacement = FactoryGirl.create(:post_replacement, post_id: @post.id) + end + + context "index action" do + should "render" do + get :index, {format: :json} + assert_response :success + end + end + end +end