module ShouldaMatchmakers::Model::ActiveRecord::Matchmaker::DefineEnumFor
Public Instance Methods
define_enum_for_matcher_tests()
click to toggle source
# File lib/model/active_record/matchmakers/define_enum_for.rb, line 8 def define_enum_for_matcher_tests defined_enums = @app_class_name.constantize.defined_enums if defined_enums.present? generate_define_enum_for_matcher_tests(defined_enums) else [] end end
Private Instance Methods
generate_define_enum_for_matcher_tests(defined_enums)
click to toggle source
# File lib/model/active_record/matchmakers/define_enum_for.rb, line 20 def generate_define_enum_for_matcher_tests(defined_enums) define_enum_tests = [] defined_enums.each do |attribute, enum_hash| define_enum_test = generate_enum_qualifier_examples(attribute, enum_hash) define_enum_test.concat(" it { is_expected.to define_enum_for(:#{ attribute }) }") define_enum_tests = append_element(define_enum_test, define_enum_tests) end format_tests(define_enum_tests) end
generate_enum_qualifier_examples(attribute, enum_hash)
click to toggle source
# File lib/model/active_record/matchmakers/define_enum_for.rb, line 30 def generate_enum_qualifier_examples(attribute, enum_hash) enum_names = get_enum_names(enum_hash) define_enum_test = "# You can use the 'with' qualifier to test that your enum has been defined with a certain set of known values.\n" if enum_names.join.length < 40 define_enum_test.concat("# Example: 'it { is_expected.to define_enum_for(:#{ attribute }).with(#{ enum_names }) }'\n") else define_enum_test.concat("# Example: 'it { is_expected.to define_enum_for(:#{ attribute }).with([#{ enum_names[0] }, #{ enum_names[1] }, ...]) }'\n") end define_enum_test.concat("#\n# Source: https://github.com/thoughtbot/shoulda-matchers/blob/master/lib/shoulda/matchers/active_record/define_enum_for_matcher.rb\n#\n") end
get_enum_names(enum_hash)
click to toggle source
# File lib/model/active_record/matchmakers/define_enum_for.rb, line 41 def get_enum_names(enum_hash) enum_names = [] enum_hash.keys.each do |enum_name| enum_names = append_element(enum_name.to_sym, enum_names) end enum_names end