class Consent::Rspec::ConsentAction

@private

Public Class Methods

new(action_key) click to toggle source
# File lib/consent/rspec/consent_action.rb, line 10
def initialize(action_key)
  @action_key = action_key
end

Public Instance Methods

description() click to toggle source
# File lib/consent/rspec/consent_action.rb, line 19
def description
  message = "consents action #{@action_key}"
  "#{message} with views #{@views}" if @views
end
failure_message() click to toggle source
# File lib/consent/rspec/consent_action.rb, line 37
def failure_message
  failure_message_base 'to'
end
failure_message_when_negated() click to toggle source
# File lib/consent/rspec/consent_action.rb, line 41
def failure_message_when_negated
  failure_message_base 'to not'
end
matches?(subject_key) click to toggle source
# File lib/consent/rspec/consent_action.rb, line 24
def matches?(subject_key)
  @subject_key = subject_key
  @action = Consent.find_action(@subject_key, @action_key)
  if @action && @views
    RSpec::Support::FuzzyMatcher.values_match?(
      @action.views.keys.sort,
      @views.sort
    )
  else
    !@action.nil?
  end
end
with_views(*views) click to toggle source
# File lib/consent/rspec/consent_action.rb, line 14
def with_views(*views)
  @views = views
  self
end

Private Instance Methods

failure_message_base(failure) click to toggle source
# File lib/consent/rspec/consent_action.rb, line 47
def failure_message_base(failure) # rubocop:disable Metrics/MethodLength
  message = format(
    'expected %<skey>s (%<sclass>s) %<failure> provide action %<action>s',
    skey: @subject_key.to_s, sclass: @subject_key.class,
    action: @action_key, failure: failure
  )

  if @action && @views
    format(
      '%<message>s with views %<views>s, but actual views are %<keys>p',
      message: message, views: @views, keys: @action.views.keys
    )
  else
    message
  end
end