Skip to content

Commit

Permalink
Validation du code campagne dans le model évaluation
Browse files Browse the repository at this point in the history
  • Loading branch information
etienneCharignon authored and shanser committed Feb 10, 2021
1 parent 1ef3eb1 commit 1eeb232
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 62 deletions.
14 changes: 5 additions & 9 deletions app/controllers/api/evaluations_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,16 @@ class EvaluationsController < ActionController::API
end

def create
evaluation = Evaluation.new(generateur_params_eval.params)
evaluation = Evaluation.new(evaluation_params)
if evaluation.save
render json: evaluation, status: :created
else
erreurs = evaluation.errors.messages
if generateur_params_eval.code_campagne_inconnu
erreurs['campagne'] = [I18n.t('admin.evaluations.code_campagne_inconnu')]
end
render json: erreurs, status: :unprocessable_entity
render json: evaluation.errors, status: :unprocessable_entity
end
end

def update
if @evaluation.update generateur_params_eval.params
if @evaluation.update evaluation_params
render json: @evaluation
else
render json: @evaluation.errors, status: :unprocessable_entity
Expand All @@ -43,8 +39,8 @@ def show

private

def generateur_params_eval
@generateur_params_eval ||= GenerateurParamsEvaluation.new(params)
def evaluation_params
params.permit(:nom, :code_campagne, :email, :telephone)
end

def trouve_evaluation
Expand Down
18 changes: 18 additions & 0 deletions app/models/evaluation.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,26 @@
class Evaluation < ApplicationRecord
validates :nom, presence: true
belongs_to :campagne, counter_cache: :nombre_evaluations
attr_accessor :code_campagne

before_validation :trouve_campagne_depuis_code
validate :code_campagne_connu

def display_name
nom
end

private

def trouve_campagne_depuis_code
return if code_campagne.blank?

self.campagne = Campagne.find_by code: code_campagne
end

def code_campagne_connu
return if code_campagne.blank? || campagne.present?

errors.add(:code_campagne, :inconnu)
end
end
26 changes: 0 additions & 26 deletions app/params/generateur_params_evaluation.rb

This file was deleted.

4 changes: 3 additions & 1 deletion config/locales/models/evaluation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ fr:
nom:
blank: doit être rempli
campagne:
required: doit être rempli
required: doit être présente
code_campagne:
inconnu: code inconnu
models:
evaluation:
one: Évaluation
Expand Down
1 change: 0 additions & 1 deletion config/locales/views/evaluations.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
fr:
admin:
evaluations:
code_campagne_inconnu: code inconnu
commun: &commun
efficience: Efficience
nombre_erreurs: "Nombre d'erreurs"
Expand Down
21 changes: 0 additions & 21 deletions spec/params/generateur_params_evaluation_spec.rb

This file was deleted.

8 changes: 4 additions & 4 deletions spec/requests/evaluations_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@

it 'retourne une 422' do
json = JSON.parse(response.body)
expect(json.keys).to eq %w[nom campagne]
expect(json.values).to eq [['doit être rempli'], ['code inconnu']]
expect(json.keys).to eq %w[nom campagne code_campagne]
expect(json.values).to eq [['doit être rempli'], ['doit être présente'], ['code inconnu']]
expect(response).to have_http_status(422)
end
end
Expand All @@ -41,7 +41,7 @@
it 'retourne une 422' do
json = JSON.parse(response.body)
expect(json.keys).to eq %w[nom campagne]
expect(json.values).to eq [['doit être rempli'], ['doit être rempli']]
expect(json.values).to eq [['doit être rempli'], ['doit être présente']]
expect(response).to have_http_status(422)
end
end
Expand All @@ -53,7 +53,7 @@
it 'retourne une 422' do
json = JSON.parse(response.body)
expect(json.keys).to eq %w[nom campagne]
expect(json.values).to eq [['doit être rempli'], ['doit être rempli']]
expect(json.values).to eq [['doit être rempli'], ['doit être présente']]
expect(response).to have_http_status(422)
end
end
Expand Down

0 comments on commit 1eeb232

Please sign in to comment.