Module: ShouldaMatchmakers::Model::ActiveRecord::ActiveRecordModelSmModelHelper
- Included in:
- ActiveRecordModelSmModel, FactorySmModel
- Defined in:
- lib/model/active_record/active_record_model_sm_model_helper.rb
Instance Method Summary collapse
- #adjust_conditional_test_indentation(conditional_test) ⇒ Object
- #all_option_values_are_symbols(option_values) ⇒ Object
- #append_element(element, element_set) ⇒ Object
- #apply_option_value_qualifiers(option_value, association_option_string) ⇒ Object
- #compose_conditional_before_strings(validator_options, conditional_options_permutation) ⇒ Object
- #compose_conditional_non_validating_context_string(validator_options, non_validating_permutation) ⇒ Object
- #compose_conditional_validating_context_string(validator_options) ⇒ Object
- #compose_extended_model_file_path(app_class_name) ⇒ Object
- #conditional_options_exist(validator_options) ⇒ Object
- #extract_validators(app_class_name, validator_type) ⇒ Object
- #format_tests(tests) ⇒ Object
- #get_if_context_condition(option_value, permutation_boolean_value_for_option) ⇒ Object
- #get_options_string(options) ⇒ Object
- #get_possible_true_false_permutations(validator_options) ⇒ Object
- #get_unless_context_condition(option_value, permutation_boolean_value_for_option) ⇒ Object
- #get_validating_true_false_permutation(validator_options) ⇒ Object
- #order_options(options) ⇒ Object
- #parse_validator_options(validator_options) ⇒ Object
- #properly_line_space_tests(tests) ⇒ Object
Instance Method Details
#adjust_conditional_test_indentation(conditional_test) ⇒ Object
173 174 175 176 177 178 179 180 181 182 |
# 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) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 |
# 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) ⇒ Object
166 167 168 169 170 171 |
# 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) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# 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) ⇒ Object
157 158 159 160 161 162 163 164 |
# File 'lib/model/active_record/active_record_model_sm_model_helper.rb', line 157 def compose_conditional_before_strings(, ) conditional_before_strings = "" conditional_option_values = [:if_option_values] + [: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(#{ [cov_index] }) }\n") end conditional_before_strings end |
#compose_conditional_non_validating_context_string(validator_options, non_validating_permutation) ⇒ Object
126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/model/active_record/active_record_model_sm_model_helper.rb', line 126 def compose_conditional_non_validating_context_string(, non_validating_permutation) non_validating_context_string = " context \"" conditional_option_values = [:if_option_values] + [:unless_option_values] conditional_option_values.each_with_index do |conditional_option_value, cov_index| if cov_index < [: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) ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/model/active_record/active_record_model_sm_model_helper.rb', line 113 def compose_conditional_validating_context_string() validating_context_string = " context \"" conditional_option_values = [:if_option_values] + [:unless_option_values] conditional_option_values.each_with_index do |option_value, cov_index| if cov_index < [: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) ⇒ Object
9 10 11 |
# 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) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/model/active_record/active_record_model_sm_model_helper.rb', line 20 def () if .key?(:if) || .key?(:unless) true else false end end |
#extract_validators(app_class_name, validator_type) ⇒ Object
13 14 15 16 17 18 |
# 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) ⇒ Object
184 185 186 187 |
# 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) ⇒ Object
139 140 141 142 143 144 145 146 |
# 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) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/model/active_record/active_record_model_sm_model_helper.rb', line 83 def () = ::ShouldaMatchmakers::Model::ActiveRecord::OptionsDefinition.new. = "" .map do |option_key, option_value| if .key?(option_key) option_string = [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) .concat("." + option_string) end end end |
#get_possible_true_false_permutations(validator_options) ⇒ Object
66 67 68 69 70 |
# File 'lib/model/active_record/active_record_model_sm_model_helper.rb', line 66 def get_possible_true_false_permutations() number_of_conditional_option_values = [:if_option_values].size + [: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) ⇒ Object
148 149 150 151 152 153 154 155 |
# 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) ⇒ Object
72 73 74 75 76 77 78 79 80 81 |
# File 'lib/model/active_record/active_record_model_sm_model_helper.rb', line 72 def get_validating_true_false_permutation() validating_permutation = [] [:if_option_values].size.times do |n| validating_permutation << true end [:unless_option_values].size.times do |n| validating_permutation << false end validating_permutation end |
#order_options(options) ⇒ Object
45 46 47 48 49 50 51 52 |
# File 'lib/model/active_record/active_record_model_sm_model_helper.rb', line 45 def () = .dup = {} = .merge({ :in=>.delete(:in) }) if .include?(:in) = .merge({ :minimum=>.delete(:minimum) }) if .include?(:minimum) = .merge({ :maximum=>.delete(:maximum) }) if .include?(:maximum) .merge() end |
#parse_validator_options(validator_options) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/model/active_record/active_record_model_sm_model_helper.rb', line 28 def () = if .key?(:if) if_option_values = .delete(:if) if_option_values = [if_option_values] if !if_option_values.is_a?(Array) else if_option_values = [] end if .key?(:unless) unless_option_values = .delete(:unless) unless_option_values = [unless_option_values] if !unless_option_values.is_a?(Array) else unless_option_values = [] end { non_conditional_options: , if_option_values: if_option_values, unless_option_values: unless_option_values } end |
#properly_line_space_tests(tests) ⇒ Object
189 190 191 192 193 194 195 196 197 198 199 200 201 |
# 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 |