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