From 59af167d0a5df032fbaaa5c499bc8182abf4ba32 Mon Sep 17 00:00:00 2001 From: Mkou Date: Fri, 22 Apr 2016 14:53:09 -0700 Subject: [PATCH] Store `message_key` on `Grape::Exceptions::Validation`. Store `message_key` on `Grape::Exceptions::Validation`. --- CHANGELOG.md | 3 +++ lib/grape/exceptions/validation.rb | 5 ++++- spec/grape/exceptions/validation_spec.rb | 10 ++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c2a0cba425..004b7225a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ * Your contribution here. +#### Features +* [#1366](https://github.com/ruby-grape/grape/pull/1366): Store `message_key` on `Grape::Exceptions::Validation` - [@mkou](https://github.com/mkou). + 0.16.2 (4/12/2016) ================== diff --git a/lib/grape/exceptions/validation.rb b/lib/grape/exceptions/validation.rb index 8c910875d1..46ba5b991d 100644 --- a/lib/grape/exceptions/validation.rb +++ b/lib/grape/exceptions/validation.rb @@ -9,7 +9,10 @@ class Validation < Grape::Exceptions::Base def initialize(args = {}) fail 'Params are missing:' unless args.key? :params @params = args[:params] - args[:message] = translate_message(args[:message]) if args.key? :message + if args.key?(:message) + @message_key = args[:message] if args[:message].is_a?(Symbol) + args[:message] = translate_message(args[:message]) + end super end diff --git a/spec/grape/exceptions/validation_spec.rb b/spec/grape/exceptions/validation_spec.rb index 1feae1e20c..ad338195ba 100644 --- a/spec/grape/exceptions/validation_spec.rb +++ b/spec/grape/exceptions/validation_spec.rb @@ -4,4 +4,14 @@ it 'fails when params are missing' do expect { Grape::Exceptions::Validation.new(message: 'presence') }.to raise_error(RuntimeError, 'Params are missing:') end + context 'when message is a symbol' do + it 'stores message_key' do + expect(Grape::Exceptions::Validation.new(params: ['id'], message: :presence).message_key).to eq(:presence) + end + end + context 'when message is a String' do + it 'does not store the message_key' do + expect(Grape::Exceptions::Validation.new(params: ['id'], message: 'presence').message_key).to eq(nil) + end + end end