public
Last active

An example of using MiniTest::Mock

  • Download Gist
test_mail_purge.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
require 'minitest/mock'
require 'minitest/unit'
require 'date'
 
MiniTest::Unit.autorun
 
class TestMailPurge < MiniTest::Unit::TestCase
class MailPurge
def initialize(imap)
@imap = imap
end
def purge(date)
formatted_date = date.strftime('%d-%b-%Y')
@imap.authenticate('LOGIN', 'user', 'password')
@imap.select('INBOX')
 
message_ids = @imap.search(["BEFORE #{formatted_date}"])
@imap.store(message_ids, "+FLAGS", [:Deleted])
end
end
def test_purging_mail
date = Date.new(2010,1,1)
formatted_date = '01-Jan-2010'
ids = [4,5,6]
mock = MiniTest::Mock.new
# mock expects:
# method return arguments
#-------------------------------------------------------------
mock.expect(:authenticate, nil, ['LOGIN', 'user', 'password'])
mock.expect(:select, nil, ['INBOX'])
mock.expect(:search, ids, [["BEFORE #{formatted_date}"]])
mock.expect(:store, nil, [ids, "+FLAGS", [:Deleted]])
mp = MailPurge.new(mock)
mp.purge(date)
assert mock.verify
end
end

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.