spec/grape/validations/validators/allow_blank_spec.rb in grape-1.6.0 vs spec/grape/validations/validators/allow_blank_spec.rb in grape-1.6.1

- old
+ new

@@ -1,27 +1,142 @@ # frozen_string_literal: true require 'spec_helper' -describe Grape::Validations::AllowBlankValidator do - module ValidationsSpec - module AllowBlankValidatorSpec - class API < Grape::API - default_format :json +describe Grape::Validations::Validators::AllowBlankValidator do + let_it_be(:app) do + Class.new(Grape::API) do + default_format :json - params do + params do + requires :name, allow_blank: false + end + get '/disallow_blank' + + params do + optional :name, type: String, allow_blank: false + end + get '/opt_disallow_string_blank' + + params do + optional :name, allow_blank: false + end + get '/disallow_blank_optional_param' + + params do + requires :name, allow_blank: true + end + get '/allow_blank' + + params do + requires :val, type: DateTime, allow_blank: true + end + get '/allow_datetime_blank' + + params do + requires :val, type: DateTime, allow_blank: false + end + get '/disallow_datetime_blank' + + params do + requires :val, type: DateTime + end + get '/default_allow_datetime_blank' + + params do + requires :val, type: Date, allow_blank: true + end + get '/allow_date_blank' + + params do + requires :val, type: Integer, allow_blank: true + end + get '/allow_integer_blank' + + params do + requires :val, type: Float, allow_blank: true + end + get '/allow_float_blank' + + params do + requires :val, type: Integer, allow_blank: true + end + get '/allow_integer_blank' + + params do + requires :val, type: Symbol, allow_blank: true + end + get '/allow_symbol_blank' + + params do + requires :val, type: Grape::API::Boolean, allow_blank: true + end + get '/allow_boolean_blank' + + params do + requires :val, type: Grape::API::Boolean, allow_blank: false + end + get '/disallow_boolean_blank' + + params do + optional :user, type: Hash do requires :name, allow_blank: false end - get '/disallow_blank' + end + get '/disallow_blank_required_param_in_an_optional_group' + params do + optional :user, type: Hash do + requires :name, type: Date, allow_blank: true + end + end + get '/allow_blank_date_param_in_an_optional_group' + + params do + optional :user, type: Hash do + optional :name, allow_blank: false + requires :age + end + end + get '/disallow_blank_optional_param_in_an_optional_group' + + params do + requires :user, type: Hash do + requires :name, allow_blank: false + end + end + get '/disallow_blank_required_param_in_a_required_group' + + params do + requires :user, type: Hash do + requires :name, allow_blank: false + end + end + get '/disallow_string_value_in_a_required_hash_group' + + params do + requires :user, type: Hash do + optional :name, allow_blank: false + end + end + get '/disallow_blank_optional_param_in_a_required_group' + + params do + optional :user, type: Hash do + optional :name, allow_blank: false + end + end + get '/disallow_string_value_in_an_optional_hash_group' + + resources :custom_message do params do - optional :name, type: String, allow_blank: false + requires :name, allow_blank: { value: false, message: 'has no value' } end - get '/opt_disallow_string_blank' + get params do - optional :name, allow_blank: false + optional :name, allow_blank: { value: false, message: 'has no value' } end get '/disallow_blank_optional_param' params do requires :name, allow_blank: true @@ -32,11 +147,11 @@ requires :val, type: DateTime, allow_blank: true end get '/allow_datetime_blank' params do - requires :val, type: DateTime, allow_blank: false + requires :val, type: DateTime, allow_blank: { value: false, message: 'has no value' } end get '/disallow_datetime_blank' params do requires :val, type: DateTime @@ -67,22 +182,22 @@ requires :val, type: Symbol, allow_blank: true end get '/allow_symbol_blank' params do - requires :val, type: Boolean, allow_blank: true + requires :val, type: Grape::API::Boolean, allow_blank: true end get '/allow_boolean_blank' params do - requires :val, type: Boolean, allow_blank: false + requires :val, type: Grape::API::Boolean, allow_blank: { value: false, message: 'has no value' } end get '/disallow_boolean_blank' params do optional :user, type: Hash do - requires :name, allow_blank: false + requires :name, allow_blank: { value: false, message: 'has no value' } end end get '/disallow_blank_required_param_in_an_optional_group' params do @@ -92,168 +207,47 @@ end get '/allow_blank_date_param_in_an_optional_group' params do optional :user, type: Hash do - optional :name, allow_blank: false + optional :name, allow_blank: { value: false, message: 'has no value' } requires :age end end get '/disallow_blank_optional_param_in_an_optional_group' params do requires :user, type: Hash do - requires :name, allow_blank: false + requires :name, allow_blank: { value: false, message: 'has no value' } end end get '/disallow_blank_required_param_in_a_required_group' params do requires :user, type: Hash do - requires :name, allow_blank: false + requires :name, allow_blank: { value: false, message: 'has no value' } end end get '/disallow_string_value_in_a_required_hash_group' params do requires :user, type: Hash do - optional :name, allow_blank: false + optional :name, allow_blank: { value: false, message: 'has no value' } end end get '/disallow_blank_optional_param_in_a_required_group' params do optional :user, type: Hash do - optional :name, allow_blank: false - end - end - get '/disallow_string_value_in_an_optional_hash_group' - - resources :custom_message do - params do - requires :name, allow_blank: { value: false, message: 'has no value' } - end - get - - params do optional :name, allow_blank: { value: false, message: 'has no value' } end - get '/disallow_blank_optional_param' - - params do - requires :name, allow_blank: true - end - get '/allow_blank' - - params do - requires :val, type: DateTime, allow_blank: true - end - get '/allow_datetime_blank' - - params do - requires :val, type: DateTime, allow_blank: { value: false, message: 'has no value' } - end - get '/disallow_datetime_blank' - - params do - requires :val, type: DateTime - end - get '/default_allow_datetime_blank' - - params do - requires :val, type: Date, allow_blank: true - end - get '/allow_date_blank' - - params do - requires :val, type: Integer, allow_blank: true - end - get '/allow_integer_blank' - - params do - requires :val, type: Float, allow_blank: true - end - get '/allow_float_blank' - - params do - requires :val, type: Integer, allow_blank: true - end - get '/allow_integer_blank' - - params do - requires :val, type: Symbol, allow_blank: true - end - get '/allow_symbol_blank' - - params do - requires :val, type: Boolean, allow_blank: true - end - get '/allow_boolean_blank' - - params do - requires :val, type: Boolean, allow_blank: { value: false, message: 'has no value' } - end - get '/disallow_boolean_blank' - - params do - optional :user, type: Hash do - requires :name, allow_blank: { value: false, message: 'has no value' } - end - end - get '/disallow_blank_required_param_in_an_optional_group' - - params do - optional :user, type: Hash do - requires :name, type: Date, allow_blank: true - end - end - get '/allow_blank_date_param_in_an_optional_group' - - params do - optional :user, type: Hash do - optional :name, allow_blank: { value: false, message: 'has no value' } - requires :age - end - end - get '/disallow_blank_optional_param_in_an_optional_group' - - params do - requires :user, type: Hash do - requires :name, allow_blank: { value: false, message: 'has no value' } - end - end - get '/disallow_blank_required_param_in_a_required_group' - - params do - requires :user, type: Hash do - requires :name, allow_blank: { value: false, message: 'has no value' } - end - end - get '/disallow_string_value_in_a_required_hash_group' - - params do - requires :user, type: Hash do - optional :name, allow_blank: { value: false, message: 'has no value' } - end - end - get '/disallow_blank_optional_param_in_a_required_group' - - params do - optional :user, type: Hash do - optional :name, allow_blank: { value: false, message: 'has no value' } - end - end - get '/disallow_string_value_in_an_optional_hash_group' end + get '/disallow_string_value_in_an_optional_hash_group' end end end - def app - ValidationsSpec::AllowBlankValidatorSpec::API - end - context 'invalid input' do it 'refuses empty string' do get '/disallow_blank', name: '' expect(last_response.status).to eq(400) @@ -287,13 +281,15 @@ context 'with invalid input' do it 'refuses empty string' do get '/custom_message', name: '' expect(last_response.body).to eq('{"error":"name has no value"}') end + it 'refuses empty string for an optional param' do get '/custom_message/disallow_blank_optional_param', name: '' expect(last_response.body).to eq('{"error":"name has no value"}') end + it 'refuses only whitespaces' do get '/custom_message', name: ' ' expect(last_response.body).to eq('{"error":"name has no value"}') get '/custom_message', name: " \n "