From cb474960f0d909051b693ba059703a970cd4e28d Mon Sep 17 00:00:00 2001 From: echarp Date: Sun, 11 Sep 2016 19:13:10 +0200 Subject: [PATCH] The rejection reason is better managed --- app/controllers/moderations_controller.rb | 11 +++++++++-- app/models/event.rb | 2 +- app/views/moderations/refuse.html.haml | 2 +- test/controllers/moderations_controller_test.rb | 6 ++++-- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/app/controllers/moderations_controller.rb b/app/controllers/moderations_controller.rb index b9db7f6a..4455b479 100644 --- a/app/controllers/moderations_controller.rb +++ b/app/controllers/moderations_controller.rb @@ -44,8 +44,7 @@ class ModerationsController < ApplicationController # DELETE /events/1 # DELETE /events/1.json def destroy - @moderation.reason = params[:event][:reason] || - t("moderations.refuse.reason_#{params[:reason]}_long") + @moderation.reason = generate_destroy_reason(params) @moderation.destroy! respond_to do |format| format.html { redirect_to :moderations, notice: t('.ok') } @@ -55,6 +54,14 @@ class ModerationsController < ApplicationController private + def generate_destroy_reason(params) + if params[:reason] == 'r_4' + params[:event][:reason] + else + t "moderations.refuse.reason_#{params[:reason]}_long" + end + end + # Use callbacks to share common setup or constraints between actions. def set_moderation @event = Event.find params[:id] diff --git a/app/models/event.rb b/app/models/event.rb index 314fd838..f6ff3cd7 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -15,7 +15,7 @@ class Event < ActiveRecord::Base validates :title, presence: true validate :end_after_start RULES = %w(daily weekly monthly).freeze - validates :rule, inclusion: RULES + validates :rule, allow_nil: true, inclusion: RULES validates :description, presence: true validates :city, presence: true validates :region, presence: true diff --git a/app/views/moderations/refuse.html.haml b/app/views/moderations/refuse.html.haml index b24ffe42..a7d01977 100644 --- a/app/views/moderations/refuse.html.haml +++ b/app/views/moderations/refuse.html.haml @@ -16,7 +16,7 @@ = radio_button_tag :reason, :r_3, params[:event] == 'reason_r_3' = label_tag :reason_r_3, t('.reason_r_3') - .field.opener{ title: t('.reason_r_4_long') } + .field.opener = radio_button_tag :reason, :r_4, params[:event] == 'reason_r_4' || !params[:event] = label_tag :reason_r_4, t('.reason_r_4') diff --git a/test/controllers/moderations_controller_test.rb b/test/controllers/moderations_controller_test.rb index 9d61e65f..120987c7 100644 --- a/test/controllers/moderations_controller_test.rb +++ b/test/controllers/moderations_controller_test.rb @@ -92,9 +92,10 @@ class ModerationsControllerTest < ActionController::TestCase test 'should reject event' do assert_difference 'Event.count', -1 do - delete :destroy, id: @moderation, event: {} + delete :destroy, id: @moderation, reason: 'r_1', event: { reason: '' } end + assert_not_empty assigns(:moderation).reason assert_empty assigns(:moderation).errors assert_redirected_to :moderations @@ -102,9 +103,10 @@ class ModerationsControllerTest < ActionController::TestCase test 'should reject event with a reason' do assert_difference 'Event.count', -1 do - delete :destroy, id: @moderation, reason: 'r_4', event: {} + delete :destroy, id: @moderation, reason: 'r_4', event: { reason: 'bye' } end + assert_not_empty assigns(:moderation).reason assert_empty assigns(:moderation).errors assert_redirected_to :moderations