class Caffeinate::RSpec::Matchers::SubscribeToCaffeinateCampaign

Public Class Methods

new(expected_campaign, subscriber, **args) click to toggle source
# File lib/caffeinate/rspec/matchers/subscribe_to_caffeinate_campaign.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/subscribe_to_caffeinate_campaign.rb, line 23
def description
  "subscribe #{who} to the \"Campaign##{@expected_campaign.slug}\" campaign"
end
failure_message() click to toggle source
# File lib/caffeinate/rspec/matchers/subscribe_to_caffeinate_campaign.rb, line 27
def failure_message
  "expected #{who} to subscribe to the \"Campaign##{@expected_campaign.slug}\" campaign but didn't"
end
failure_message_when_negated() click to toggle source
# File lib/caffeinate/rspec/matchers/subscribe_to_caffeinate_campaign.rb, line 41
def failure_message_when_negated
  "expected #{who} to not subscribe to the \"Campaign##{@expected_campaign.slug}\" campaign but did"
end
matches?(block) click to toggle source

Checks whether the block results in a subscription to the expected campaign.

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

# File lib/caffeinate/rspec/matchers/subscribe_to_caffeinate_campaign.rb, line 34
def matches?(block)
  return false if @expected_campaign.caffeinate_campaign_subscriptions.active.exists?(subscriber: @subscriber, **@args)

  block.call
  @expected_campaign.caffeinate_campaign_subscriptions.active.exists?(subscriber: @subscriber, **@args)
end
supports_block_expectations?() click to toggle source
# File lib/caffeinate/rspec/matchers/subscribe_to_caffeinate_campaign.rb, line 45
def supports_block_expectations?
  true
end

Private Instance Methods

who() click to toggle source
# File lib/caffeinate/rspec/matchers/subscribe_to_caffeinate_campaign.rb, line 51
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