module ValidateMyRoutes::Validate::Rules

Module provides methods to validate if rule is a rule and if it can be used for single or all parameters validation.

Constants

REQUIRED_RULE_METHODS

Public Class Methods

all_params_rule?(rule) click to toggle source
# File lib/validate_my_routes/validate/rules.rb, line 25
def all_params_rule?(rule)
  validation_rule?(rule) && %i[all_params general].include?(rule.rule_type)
end
single_param_rule?(rule) click to toggle source
# File lib/validate_my_routes/validate/rules.rb, line 21
def single_param_rule?(rule)
  validation_rule?(rule) && %i[single_param general].include?(rule.rule_type)
end
validate_all_params_rule!(rule) click to toggle source

Validate that rule can be used for all parameters validation

Example:

Rules.validate_all_params_rule! of_type(Integer) # => throws an exception
# File lib/validate_my_routes/validate/rules.rb, line 46
def validate_all_params_rule!(rule)
  return if Rules.all_params_rule?(rule)
  raise ValidateMyRoutes::Errors::UnsupportedRuleError,
        "rule #{rule} must implement #{REQUIRED_RULE_METHODS.join(', ')} " \
        'and be either :generic or :all_params rule type.'
end
validate_single_param_rule!(rule) click to toggle source

Validate that rule can be used for single parameter validation

Example:

Rules.validate_single_param_rule! required(:q) # => throws an exception
# File lib/validate_my_routes/validate/rules.rb, line 34
def validate_single_param_rule!(rule)
  return if Rules.single_param_rule?(rule)
  raise ValidateMyRoutes::Errors::UnsupportedRuleError,
        "rule #{rule} must implement #{REQUIRED_RULE_METHODS.join(', ')} " \
        'and be either :generic or :single_param rule type.'
end

Private Class Methods

validation_rule?(rule) click to toggle source
# File lib/validate_my_routes/validate/rules.rb, line 55
def validation_rule?(rule)
  REQUIRED_RULE_METHODS.all? { |method_name| rule.respond_to? method_name }
end