class Caffeinate::RSpec::Matchers::EndCaffeinateCampaignSubscription

Public Class Methods

new(expected_campaign, subscriber, **args) click to toggle source
# File lib/caffeinate/rspec/matchers/end_caffeinate_campaign_subscription.rb, line 17
def initialize(expected_campaign, subscriber, **args)
  @expected_campaign = expected_campaign
  @subscriber = subscriber
  @args = args
end

Public Instance Methods

description() click to toggle source
# File lib/caffeinate/rspec/matchers/end_caffeinate_campaign_subscription.rb, line 23
def description
  "end the CampaignSubscription of #{who} on the \"Campaign##{@expected_campaign.slug}\" campaign"
end
failure_message() click to toggle source
# File lib/caffeinate/rspec/matchers/end_caffeinate_campaign_subscription.rb, line 27
def failure_message
  "expected the CampaignSubscription of #{who} on the \"Campaign##{@expected_campaign.slug}\" campaign to end but didn't"
end
failure_message_when_negated() click to toggle source
# File lib/caffeinate/rspec/matchers/end_caffeinate_campaign_subscription.rb, line 42
def failure_message_when_negated
  "expected the CampaignSubscription of #{who} on the \"Campaign##{@expected_campaign.slug}\" campaign to not end but did"
end
matches?(block) click to toggle source

Checks whether the block results in the campaign subscription becoming ended.

@param block [Block] The block of code to execute.

# File lib/caffeinate/rspec/matchers/end_caffeinate_campaign_subscription.rb, line 34
def matches?(block)
  sub = @expected_campaign.caffeinate_campaign_subscriptions.find_by(subscriber: @subscriber, **@args)
  return false unless sub && !sub.ended?

  block.call
  sub.reload.ended?
end
supports_block_expectations?() click to toggle source
# File lib/caffeinate/rspec/matchers/end_caffeinate_campaign_subscription.rb, line 46
def supports_block_expectations?
  true
end

Private Instance Methods

who() click to toggle source
# File lib/caffeinate/rspec/matchers/end_caffeinate_campaign_subscription.rb, line 52
def who
  str = "#{@subscriber.class.name}##{@subscriber.to_param}"
  user = @args[:user]
  if user
    str << "/#{user.class.name}##{user.to_param}"
  end
  if @args.except(:user).any?
    str << "/#{@args.except(:user).inspect}"
  end
  str
end