joshmn/caffeinate

View on GitHub
docs/44-testing.md

Summary

Maintainability
Test Coverage
# Testing

Caffeinate ships with some RSpec matchers for convenience.

## Installation

In `rails_helper.rb`:

```ruby
require 'caffeinate/rspec'
```

### Check if an action unsubscribed someone from a campaign

```ruby
expect { campaign.unsubscribe(company, user: user) }.to unsubscribe_from_caffeinate_campaign campaign, company, user: user

```

### Check if an action subscribed someone to a campaign

```ruby
expect { campaign.subscribe(company, user: user) }.to subscribe_to_caffeinate_campaign campaign, company, user: user
```

### Check if someone is subscribed to a campaign

```ruby
campaign.subscribe(user)

expect(user).to be_subscribed_to_caffeinate_campaign campaign
```

This will check if they are subscribed as a `subscriber` relation (polymorphic). To add arguments:

```ruby
campaign.subscribe(company)

expect(company).to be_subscribed_to_caffeinate_campaign(campaign).with(user: user)
```

### Check if an action resulted in a campaign subscription being ended

```ruby
expect { campaign.subscribe(company, user: user).end! }.to end_caffeinate_campaign_subscription campaign, company, user: user
```