Class: Salestation::RSpec::GliaInputValidationErrorMatcher

Inherits:
Object
  • Object
show all
Includes:
RSpec::Matchers::Composable
Defined in:
lib/salestation/rspec/glia_input_validation_error_matcher.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeGliaInputValidationErrorMatcher

Returns a new instance of GliaInputValidationErrorMatcher.



12
13
14
15
16
17
# File 'lib/salestation/rspec/glia_input_validation_error_matcher.rb', line 12

def initialize
  @fields = []
  @field_error_types = {}
  @field_error_messages = {}
  @expect_exact_match = false
end

Instance Attribute Details

#actualObject (readonly)

Returns the value of attribute actual.



10
11
12
# File 'lib/salestation/rspec/glia_input_validation_error_matcher.rb', line 10

def actual
  @actual
end

#expectedObject (readonly)

Returns the value of attribute expected.



10
11
12
# File 'lib/salestation/rspec/glia_input_validation_error_matcher.rb', line 10

def expected
  @expected
end

#failure_messageObject (readonly)

Returns the value of attribute failure_message.



10
11
12
# File 'lib/salestation/rspec/glia_input_validation_error_matcher.rb', line 10

def failure_message
  @failure_message
end

Class Method Details

.path_list_to_trie(paths) ⇒ Object

Examples:

path_list_to_trie([[:a, :b, :c], [:a, :b, :d], [:a, :e]])
#=> {a: {b: {c: {}, d: {}}, e: {}}}


111
112
113
114
115
# File 'lib/salestation/rspec/glia_input_validation_error_matcher.rb', line 111

def path_list_to_trie(paths)
  paths.reduce({}) do |acc, path|
    deep_merge(acc, path_to_trie(*path))
  end
end

Instance Method Details

#exactlyObject



24
25
26
27
# File 'lib/salestation/rspec/glia_input_validation_error_matcher.rb', line 24

def exactly
  @expect_exact_match = true
  self
end

#matches?(actual) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
42
43
44
45
46
# File 'lib/salestation/rspec/glia_input_validation_error_matcher.rb', line 39

def matches?(actual)
  check_exact_match(actual, self.class.path_list_to_trie(@fields)) &&
    @fields.all? do |field|
      check_field_exists(actual, *field) &&
        check_field_error_types(field, actual) &&
        check_field_error_messages(field, actual)
    end
end

#on(*nested_fields) ⇒ Object



19
20
21
22
# File 'lib/salestation/rspec/glia_input_validation_error_matcher.rb', line 19

def on(*nested_fields)
  @fields << nested_fields
  self
end

#with_message(*messages) ⇒ Object



34
35
36
37
# File 'lib/salestation/rspec/glia_input_validation_error_matcher.rb', line 34

def with_message(*messages)
  @field_error_messages[field_to_key(@fields.last)] = messages
  self
end

#with_type(*types) ⇒ Object



29
30
31
32
# File 'lib/salestation/rspec/glia_input_validation_error_matcher.rb', line 29

def with_type(*types)
  @field_error_types[field_to_key(@fields.last)] = types
  self
end