#!/usr/local/bin/ruby
# -*- ruby -*-

require 'runit/testcase'
require 'runit/cui/testrunner'

require 'lens/message'

TESTMAILDIR = '/tmp/Maildir_test'
TESTMESSAGE = '/tmp/Maildir_test/testmessage'

class TestUnit < RUNIT::TestCase
  def setup
    @maildir = TESTMAILDIR
    cleanup
    Dir.mkdir(@maildir)
    @text1 = <<EOF
Subject: [testml:123] Test Mail
From: masui@pitecan.com
To: masui@example.com

line1
line2
EOF
  end

  def teardown
    cleanup
  end

  def cleanup
    system "rm -r -f #{@maildir}"
  end

  def test_initialize
    File.open(TESTMESSAGE,"w"){ |f|
      f.print @text1
    }
    message = Message.new(TESTMESSAGE)
    assert_equal('masui@pitecan.com',message['From'])
    assert_equal(TESTMESSAGE,message.path)
    assert_equal(false,message.stdin)
    assert_equal(@text1,message.text.join)
  end

  def test_refile
    File.open(TESTMESSAGE,"w"){ |f|
      f.print @text1
    }
    message = Message.new(TESTMESSAGE)
    message.refile(@maildir,'test')
    assert_equal(true,File.exist?(@maildir + "/.test/cur/testmessage"))
  end

  def test_delete
    File.open(TESTMESSAGE,"w"){ |f|
      f.print @text1
    }
    message = Message.new(TESTMESSAGE)
    message.delete
    assert_equal(false,File.exist?(TESTMESSAGE))
  end

  def test_subject
    File.open(TESTMESSAGE,"w"){ |f|
      f.print @text1
    }
    message = Message.new(TESTMESSAGE)
    assert_equal("[testml:123] Test Mail",message.subject)
  end

  def test_subject2
    File.open(TESTMESSAGE,"w"){ |f|
      f.print @text1
    }
    message = Message.new(TESTMESSAGE)
    assert_equal("[testml:123] Test Mail",message['Subject'])
  end

  def test_body
    File.open(TESTMESSAGE,"w"){ |f|
      f.print @text1
    }
    message = Message.new(TESTMESSAGE)
    assert_equal("line1\nline2\n",message.body.join)
  end

  def test_mlname
    File.open(TESTMESSAGE,"w"){ |f|
      f.print @text1
    }
    message = Message.new(TESTMESSAGE)
    assert_equal("testml",message.ml_name)
  end

end

RUNIT::CUI::TestRunner.run(TestUnit.suite)

