Class: Phlex::Sorbet::RSpec::Matchers::HaveProp
- Inherits:
-
Object
- Object
- Phlex::Sorbet::RSpec::Matchers::HaveProp
- Defined in:
- lib/phlex/sorbet/rspec/matchers.rb
Overview
Matcher for validating a single prop definition
Instance Method Summary collapse
- #description ⇒ Object
- #failure_message ⇒ Object
- #failure_message_when_negated ⇒ Object
-
#initialize(field_name, expected_type = nil) ⇒ HaveProp
constructor
A new instance of HaveProp.
- #matches?(component_class) ⇒ Boolean
-
#with_default(default_value) ⇒ Object
Chain to check for a specific default value.
Constructor Details
#initialize(field_name, expected_type = nil) ⇒ HaveProp
Returns a new instance of HaveProp.
15 16 17 18 19 20 |
# File 'lib/phlex/sorbet/rspec/matchers.rb', line 15 def initialize(field_name, expected_type = nil) @field_name = field_name @expected_type = expected_type @expected_default = nil @check_default = false end |
Instance Method Details
#description ⇒ Object
48 49 50 51 52 53 |
# File 'lib/phlex/sorbet/rspec/matchers.rb', line 48 def description desc = "have prop :#{@field_name}" desc += " of type #{@expected_type}" if @expected_type desc += " with default #{@expected_default.inspect}" if @check_default desc end |
#failure_message ⇒ Object
40 41 42 |
# File 'lib/phlex/sorbet/rspec/matchers.rb', line 40 def @failure_message || "expected #{@actual} to have prop :#{@field_name}" end |
#failure_message_when_negated ⇒ Object
44 45 46 |
# File 'lib/phlex/sorbet/rspec/matchers.rb', line 44 def "expected #{@actual}::Props not to have prop :#{@field_name}" end |
#matches?(component_class) ⇒ Boolean
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/phlex/sorbet/rspec/matchers.rb', line 29 def matches?(component_class) @actual = component_class props = fetch_props(component_class) return false unless field_exists?(component_class, props) return false unless type_matches?(component_class, props[@field_name]) return false unless default_matches?(component_class, props[@field_name]) true end |
#with_default(default_value) ⇒ Object
Chain to check for a specific default value
23 24 25 26 27 |
# File 'lib/phlex/sorbet/rspec/matchers.rb', line 23 def with_default(default_value) @expected_default = default_value @check_default = true self end |