module ShouldaMatchmakers::Model::ActiveRecord::ActiveRecordModelSmModelHelper
Public Instance Methods
adjust_conditional_test_indentation(conditional_test)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 173 def adjust_conditional_test_indentation(conditional_test) if conditional_test.include?("\n") conditional_test.sub(" it do\n","\n it do\n"). sub("it do\n ","it do\n "). gsub(").\n ",").\n "). sub("\n end","\n end") else conditional_test.sub(" it {", "\n it {") end end
all_option_values_are_symbols(option_values)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 54 def all_option_values_are_symbols(option_values) option_values_are_symbols = true if option_values.present? option_values.each do |option_value| if !option_value.is_a?(Symbol) option_values_are_symbols = false end end end option_values_are_symbols end
append_element(element, element_set)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 166 def append_element(element, element_set) if element.present? element_set << element end element_set end
apply_option_value_qualifiers(option_value, association_option_string)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 97 def apply_option_value_qualifiers(option_value, association_option_string) option_value_refined = option_value option_value_qualifiers = association_option_string.scan(/(?: option_value|\.[a-zA-Z0-9_]+)(\.[a-zA-Z0-9_]+)/) option_value_qualifiers.each do |option_value_qualifier| case option_value_qualifier when ".first" option_value_refined = option_value_refined.first when ".last" option_value_refined = option_value_refined.last when ".to_s" option_value_refined = option_value_refined.to_s end end option_value_refined.to_s end
compose_conditional_before_strings(validator_options, conditional_options_permutation)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 157 def compose_conditional_before_strings(validator_options, conditional_options_permutation) conditional_before_strings = "" conditional_option_values = validator_options[:if_option_values] + validator_options[:unless_option_values] conditional_option_values.each_with_index do |conditional_option_value, cov_index| conditional_before_strings.concat(" before { allow(subject).to receive(:#{ conditional_option_value }).and_return(#{ conditional_options_permutation[cov_index] }) }\n") end conditional_before_strings end
compose_conditional_non_validating_context_string(validator_options, non_validating_permutation)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 126 def compose_conditional_non_validating_context_string(validator_options, non_validating_permutation) non_validating_context_string = " context \"" conditional_option_values = validator_options[:if_option_values] + validator_options[:unless_option_values] conditional_option_values.each_with_index do |conditional_option_value, cov_index| if cov_index < validator_options[:if_option_values].size non_validating_context_string.concat(get_if_context_condition(conditional_option_value, non_validating_permutation[cov_index])) else non_validating_context_string.concat(get_unless_context_condition(conditional_option_value, non_validating_permutation[cov_index])) end end non_validating_context_string.chomp!(" and ").concat("\" do\n") end
compose_conditional_validating_context_string(validator_options)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 113 def compose_conditional_validating_context_string(validator_options) validating_context_string = " context \"" conditional_option_values = validator_options[:if_option_values] + validator_options[:unless_option_values] conditional_option_values.each_with_index do |option_value, cov_index| if cov_index < validator_options[:if_option_values].size validating_context_string.concat("if #{ option_value.to_s.chomp('?')} and ") else validating_context_string.concat("unless #{ option_value.to_s.chomp('?')} and ") end end validating_context_string.chomp!(" and ").concat("\" do\n") end
compose_extended_model_file_path(app_class_name)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 9 def compose_extended_model_file_path(app_class_name) Rails.root.join("app", "models").to_s + "/" + app_class_name.underscore.concat(".rb") end
conditional_options_exist(validator_options)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 20 def conditional_options_exist(validator_options) if validator_options.key?(:if) || validator_options.key?(:unless) true else false end end
extract_validators(app_class_name, validator_type)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 13 def extract_validators(app_class_name, validator_type) extracted_validators = app_class_name.constantize.validators.select do |validator| validator.class.to_s == validator_type.to_s end extracted_validators.flatten end
format_tests(tests)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 184 def format_tests(tests) formatted_tests = properly_line_space_tests(tests) formatted_tests.flatten.compact.uniq.join("\n") end
get_if_context_condition(option_value, permutation_boolean_value_for_option)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 139 def get_if_context_condition(option_value, permutation_boolean_value_for_option) if permutation_boolean_value_for_option if_context_condition = "if #{ option_value.to_s.chomp('?')} and " else if_context_condition = "if not #{ option_value.to_s.chomp('?')} and " end if_context_condition end
get_options_string(options)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 83 def get_options_string(options) options_hash = ::ShouldaMatchmakers::Model::ActiveRecord::OptionsDefinition.new.options_hash options_string = "" options.map do |option_key, option_value| if options_hash.key?(option_key) option_string = options_hash[option_key].to_s option_value_refined = apply_option_value_qualifiers(option_value, option_string) option_string = option_string.gsub(/\s*\{\s*/,"").gsub(/\s*\}\s*/,"").gsub(/option_value(?:\.[a-zA-Z0-9_]+)*/, option_value_refined) options_string.concat("." + option_string) end end options_string end
get_possible_true_false_permutations(validator_options)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 66 def get_possible_true_false_permutations(validator_options) number_of_conditional_option_values = validator_options[:if_option_values].size + validator_options[:unless_option_values].size [true, false].repeated_permutation(number_of_conditional_option_values).to_a end
get_unless_context_condition(option_value, permutation_boolean_value_for_option)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 148 def get_unless_context_condition(option_value, permutation_boolean_value_for_option) if permutation_boolean_value_for_option unless_context_condition = "if (unless not) #{ option_value.to_s.chomp('?')} and " else unless_context_condition = "if not (unless) #{ option_value.to_s.chomp('?')} and " end unless_context_condition end
get_validating_true_false_permutation(validator_options)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 72 def get_validating_true_false_permutation(validator_options) validating_permutation = [] validator_options[:if_option_values].size.times do |n| validating_permutation << true end validator_options[:unless_option_values].size.times do |n| validating_permutation << false end validating_permutation end
order_options(options)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 45 def order_options(options) options_unordered = options.dup options_ordered = {} options_ordered = options_ordered.merge({ :in=>options_unordered.delete(:in) }) if options_unordered.include?(:in) options_ordered = options_ordered.merge({ :minimum=>options_unordered.delete(:minimum) }) if options_unordered.include?(:minimum) options_ordered = options_ordered.merge({ :maximum=>options_unordered.delete(:maximum) }) if options_unordered.include?(:maximum) options_ordered.merge(options_unordered) end
parse_validator_options(validator_options)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 28 def parse_validator_options(validator_options) non_conditional_options = validator_options if validator_options.key?(:if) if_option_values = non_conditional_options.delete(:if) if_option_values = [if_option_values] if !if_option_values.is_a?(Array) else if_option_values = [] end if validator_options.key?(:unless) unless_option_values = non_conditional_options.delete(:unless) unless_option_values = [unless_option_values] if !unless_option_values.is_a?(Array) else unless_option_values = [] end { non_conditional_options: non_conditional_options, if_option_values: if_option_values, unless_option_values: unless_option_values } end
properly_line_space_tests(tests)
click to toggle source
# File lib/model/active_record/active_record_model_sm_model_helper.rb, line 189 def properly_line_space_tests(tests) tests_properly_line_spaced = [] previous_test = "" tests.each do |test| if (test.include?("\n") && previous_test.present?) || (!test.include?("\n") && previous_test.include?("\n")) test = "\n" + test end tests_properly_line_spaced << test previous_test = test end tests_properly_line_spaced end