Class: Shoulda::Matchers::ActiveRecord::HaveValidEnumMatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/beyond_the_api_test_helpers/shoulda/have_valid_enum.rb

Instance Method Summary collapse

Constructor Details

#initialize(field, enum_klass) ⇒ HaveValidEnumMatcher

Returns a new instance of HaveValidEnumMatcher.



10
11
12
13
# File 'lib/beyond_the_api_test_helpers/shoulda/have_valid_enum.rb', line 10

def initialize(field, enum_klass)
  @field = field
  @enum_klass = enum_klass
end

Instance Method Details

#descriptionObject



44
45
46
# File 'lib/beyond_the_api_test_helpers/shoulda/have_valid_enum.rb', line 44

def description
  "have a valid enum #{@enum_klass} called #{@field}"
end

#failure_messageObject Also known as: failure_message_for_should



34
35
36
# File 'lib/beyond_the_api_test_helpers/shoulda/have_valid_enum.rb', line 34

def failure_message
  "Expected #{expectation} (#{@missing})"
end

#failure_message_when_negatedObject Also known as: failure_message_for_should_not



39
40
41
# File 'lib/beyond_the_api_test_helpers/shoulda/have_valid_enum.rb', line 39

def failure_message_when_negated
  "Did not expect #{expectation}"
end

#matches?(subject) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
18
19
20
# File 'lib/beyond_the_api_test_helpers/shoulda/have_valid_enum.rb', line 15

def matches?(subject)
  @subject = subject
  @expected_message ||= :inclusion

  matches_positive? && matches_negative?
end

#matches_negative?Boolean

Returns:

  • (Boolean)


28
29
30
31
32
# File 'lib/beyond_the_api_test_helpers/shoulda/have_valid_enum.rb', line 28

def matches_negative?
  @subject.send("#{@field}=", @enum_klass.list.sample)
  @subject.valid?
  !@subject.errors[@field].include? I18n.t("errors.messages.#{@expected_message}")
end

#matches_positive?Boolean

Returns:

  • (Boolean)


22
23
24
25
26
# File 'lib/beyond_the_api_test_helpers/shoulda/have_valid_enum.rb', line 22

def matches_positive?
  @subject.send("#{@field}=", 999)
  @subject.valid?
  @subject.errors[@field].include? I18n.t("errors.messages.#{@expected_message}")
end