class StateMachineChecker::RspecMatchers::SatisfyMatcher

Attributes

formula[R]
instance_generator[R]
result[R]

Public Class Methods

new(formula) click to toggle source
# File lib/state_machine_checker/rspec_matchers.rb, line 12
def initialize(formula)
  @formula = formula
end

Public Instance Methods

description() click to toggle source
# File lib/state_machine_checker/rspec_matchers.rb, line 16
def description
  "satisfy \"#{formula}\""
end
diffable?() click to toggle source
# File lib/state_machine_checker/rspec_matchers.rb, line 20
def diffable?
  false
end
failure_message() click to toggle source
# File lib/state_machine_checker/rspec_matchers.rb, line 30
      def failure_message
        <<~MESSAGE
          Expected state machine for #{machine_name} to satisfy "#{formula}" but it does not.
          Counterexample: #{result.counterexample}
        MESSAGE
      end
failure_message_when_negated() click to toggle source
# File lib/state_machine_checker/rspec_matchers.rb, line 37
      def failure_message_when_negated
        <<~MESSAGE
          Expected state machine for #{machine_name} not to satisfy "#{formula}" but it does.
          Witness: #{result.witness}
        MESSAGE
      end
matches?(instance_generator) click to toggle source
# File lib/state_machine_checker/rspec_matchers.rb, line 24
def matches?(instance_generator)
  @instance_generator = instance_generator
  @result = check_satisfied(formula, instance_generator)
  @result.satisfied?
end
supports_block_expectations?() click to toggle source
# File lib/state_machine_checker/rspec_matchers.rb, line 44
def supports_block_expectations?
  true
end

Private Instance Methods

machine_name() click to toggle source
# File lib/state_machine_checker/rspec_matchers.rb, line 52
def machine_name
  # TODO: This assumes state_machines gem
  klass = instance_generator.call.class
  gem_machine = klass.state_machine
  "#{klass}##{gem_machine.name}"
end