Class: PencilPusher::HaveRequiredChoiceField

Inherits:
Object
  • Object
show all
Includes:
Matchers, RSpec::Matchers
Defined in:
lib/pencil_pusher/have_required_choice_field.rb

Instance Method Summary collapse

Methods included from Matchers

#have_errors, #have_int_field, #have_required_choice_field, #have_required_field, #have_required_float_field, #have_required_int_field, #have_required_text_field, #have_text_field

Constructor Details

#initialize(field_name, valid_values, blank_error, invalid_error) ⇒ HaveRequiredChoiceField

Returns a new instance of HaveRequiredChoiceField.



6
7
8
9
10
11
# File 'lib/pencil_pusher/have_required_choice_field.rb', line 6

def initialize(field_name, valid_values, blank_error, invalid_error)
  @field_name = field_name
  @valid_values = valid_values
  @blank_error = blank_error
  @invalid_error = invalid_error
end

Instance Method Details

#descriptionObject



39
40
41
# File 'lib/pencil_pusher/have_required_choice_field.rb', line 39

def description
  "have required choice field #{field_name}"
end

#failure_message_for_should(actual, two) ⇒ Object Also known as: failure_message



28
29
30
# File 'lib/pencil_pusher/have_required_choice_field.rb', line 28

def failure_message_for_should(actual, two)
  @error
end

#failure_message_for_should_not(actual) ⇒ Object Also known as: failure_message_when_negated



32
33
34
# File 'lib/pencil_pusher/have_required_choice_field.rb', line 32

def failure_message_for_should_not(actual)
  "expected #{actual} to not have required choice field #{field_name} but did"
end

#matches?(form) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/pencil_pusher/have_required_choice_field.rb', line 13

def matches?(form)
  begin
    expect(form).to have_required_field(field_name, blank_error)
    builder = FormBuilder.builder(form)
    expect(builder.call(field_name => 'invalid_value')).to have_errors(field_name, [invalid_error])
    valid_values.each do |valid_value|
      expect(builder.call(field_name => valid_value.to_s)).not_to have_errors(field_name)
    end
  rescue => e
    @error = e.message
    raise e
  end
  true
end