diff options
author | Antonio Terceiro <terceiro@debian.org> | 2013-08-13 01:01:59 +0200 |
---|---|---|
committer | Antonio Terceiro <terceiro@softwarelivre.org> | 2013-08-13 01:51:52 +0200 |
commit | 893eda640f3344adc08d77b475297a1353691d38 (patch) | |
tree | fbe706dcf7fdf4edef7d349e49f2aad95a7f568c /test/tc_maildir.rb | |
parent | b55bf0a982752bf594dd25fb88b07222e45899a5 (diff) | |
download | feed2imap-893eda640f3344adc08d77b475297a1353691d38.tar.gz feed2imap-893eda640f3344adc08d77b475297a1353691d38.tar.bz2 feed2imap-893eda640f3344adc08d77b475297a1353691d38.zip |
Fix MaildirAccount class; add tests
Diffstat (limited to 'test/tc_maildir.rb')
-rw-r--r-- | test/tc_maildir.rb | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/test/tc_maildir.rb b/test/tc_maildir.rb new file mode 100644 index 0000000..343e5f7 --- /dev/null +++ b/test/tc_maildir.rb @@ -0,0 +1,93 @@ +require 'test/unit' +require 'fileutils' +require 'tmpdir' +require 'mocha/setup' + +require 'feed2imap/maildir' + +class TestMaildir < Test::Unit::TestCase + + def setup + @tmpdirs = [] + end + + def tear_down + @tmpdirs.each do |dir| + FileUtils.rm_rf(dir) + end + end + + def test_cleanup + folder = create_maildir + msgs = message_count(folder) + + maildir_account.cleanup(folder) + + assert_equal msgs - 1, message_count(folder) + end + + def test_putmail + folder = create_maildir + msgs = message_count(folder) + + mail = RMail::Message.new + mail.header['Subject'] = 'a message I just created' + mail.body = 'to test maildir' + maildir_account.putmail(folder, mail) + + assert_equal msgs + 1, message_count(folder) + end + + def test_updatemail + folder = create_maildir + path = maildir_account.send( + :find_mails, + folder, + 'regular-message-id@debian.org' + ).first + assert_not_nil path + mail = RMail::Message.new + mail.header['Subject'] = 'a different subject' + mail.header['Message-ID'] = 'regular-message-id@debian.org' + mail.body = 'This is the body of the message' + maildir_account.updatemail(folder, mail, 'regular-message-id@debian.org') + + updated_path = maildir_account.send( + :find_mails, + folder, + 'regular-message-id@debian.org' + ).first + updated_mail = RMail::Parser.read(File.open(File.join(folder, updated_path))) + + assert_equal 'a different subject', updated_mail.header['Subject'] + end + + def test_find_mails + folder = create_maildir + assert_equal 0, maildir_account.send(:find_mails, folder, 'SomeRandomMessageID').size + end + + private + + def create_maildir + parent = Dir.mktmpdir + @tmpdirs << parent + FileUtils.cp_r('test/maildir', parent) + return File.join(parent, 'maildir') + end + + def message_count(folder) + Dir.glob(File.join(folder, '**', '*')).reject { |f| File.directory?(f) }.size + end + + def maildir_account + @maildir_account ||= + begin + MaildirAccount.new.tap do |account| + account.stubs(:puts) + end + end + end + +end + |