Module: SmsCarrier::TestHelper

Includes:
ActiveJob::TestHelper
Included in:
SmsCarrier::TestCase::Behavior
Defined in:
lib/sms_carrier/test_helper.rb

Overview

Provides helper methods for testing SmsCarrier, including #assert_smses and #assert_no_smses.

Instance Method Summary collapse

Instance Method Details

#assert_no_smses(&block) ⇒ Object

Assert that no SMSes have been sent.

def test_smses
  assert_no_smses
  ContactCarrier.welcome.deliver_now
  assert_smses 1
end

If a block is passed, that block should not cause any SMSes to be sent.

def test_smses_again
  assert_no_smses do
    # No SMSes should be sent from this block
  end
end

Note: This assertion is simply a shortcut for:

assert_smses 0


62
63
64
# File 'lib/sms_carrier/test_helper.rb', line 62

def assert_no_smses(&block)
  assert_smses 0, &block
end

#assert_smses(number) ⇒ Object

Asserts that the number of SMSes sent matches the given number.

def test_smses
  assert_smses 0
  ContactCarrier.welcome.deliver_now
  assert_smses 1
  ContactCarrier.welcome.deliver_now
  assert_smses 2
end

If a block is passed, that block should cause the specified number of SMSes to be sent.

def test_smses_again
  assert_smses 1 do
    ContactCarrier.welcome.deliver_now
  end

  assert_smses 2 do
    ContactCarrier.welcome.deliver_now
    ContactCarrier.welcome.deliver_now
  end
end


32
33
34
35
36
37
38
39
40
41
# File 'lib/sms_carrier/test_helper.rb', line 32

def assert_smses(number)
  if block_given?
    original_count = SmsCarrier::Base.deliveries.size
    yield
    new_count = SmsCarrier::Base.deliveries.size
    assert_equal number, new_count - original_count, "#{number} SMSes expected, but #{new_count - original_count} were sent"
  else
    assert_equal number, SmsCarrier::Base.deliveries.size
  end
end