class Consent::Rspec::ConsentView
@private
Public Class Methods
new(view_key, conditions)
click to toggle source
# File lib/consent/rspec/consent_view.rb, line 7 def initialize(view_key, conditions) @conditions = comparable_conditions(conditions) if conditions @view_key = view_key end
Public Instance Methods
description()
click to toggle source
# File lib/consent/rspec/consent_view.rb, line 17 def description message = "consents view #{@view_key}" "#{message} with conditions #{@conditions}" if @conditions end
failure_message()
click to toggle source
# File lib/consent/rspec/consent_view.rb, line 38 def failure_message failure_message_base 'to' end
failure_message_when_negated()
click to toggle source
# File lib/consent/rspec/consent_view.rb, line 42 def failure_message_when_negated failure_message_base 'to not' end
matches?(subject_key)
click to toggle source
# File lib/consent/rspec/consent_view.rb, line 27 def matches?(subject_key) @subject_key = subject_key @target = Consent.find_subjects(subject_key) .map do |subject| subject.views[@view_key]&.conditions(*@context) end .compact .map(&method(:comparable_conditions)) @target.include?(@conditions) end
to(*context)
click to toggle source
# File lib/consent/rspec/consent_view.rb, line 12 def to(*context) @context = context self end
with_conditions(conditions)
click to toggle source
# File lib/consent/rspec/consent_view.rb, line 22 def with_conditions(conditions) @conditions = comparable_conditions(conditions) self end
Private Instance Methods
comparable_conditions(conditions)
click to toggle source
# File lib/consent/rspec/consent_view.rb, line 48 def comparable_conditions(conditions) return conditions.to_sql if conditions.respond_to?(:to_sql) conditions end
failure_message_base(failure)
click to toggle source
# File lib/consent/rspec/consent_view.rb, line 54 def failure_message_base(failure) # rubocop:disable Metrics/MethodLength message = format( 'expected %<skey>s (%<sclass>s) %<fail>s provide view %<view>s with`\ `%<conditions>p, but', skey: @subject_key.to_s, sclass: @subject_key.class, view: @view_key, conditions: @conditions, fail: failure ) if @target.any? format( '%<message>s conditions are %<conditions>p', message: message, conditions: @target ) else actual_views = Consent.find_subjects(subject_key) .map(&:views) .map(&:keys).flatten format( '%<message>s available views are %<views>p', message: message, views: actual_views ) end end