require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
require "external_command"

def mailin_test(email_filename)
    Dir.chdir Rails.root do
        xc = ExternalCommand.new("script/mailin")
        mail = load_file_fixture(email_filename)
        ir = info_requests(:other_request)
        mail.gsub!('EMAIL_TO', ir.incoming_email)
        mail.gsub!('EMAIL_FROM', 'responder@localhost')
        xc.run(mail)
        xc.err.should == ""
        return xc
    end
end

describe "When importing mail into the application" do

    # Turn off transactional fixtures for this suite - incoming message is imported
    # outside the transaction via ExternalCommand, so needs to be destroyed outside the
    # transaction
    self.use_transactional_fixtures = false

    it "should not produce any output and should return a 0 code on importing a plain email" do
        r = mailin_test("incoming-request-empty.email")
        r.status.should == 0
        r.out.should == ""
    end

    # Destroy the incoming message so that it doesn't affect other tests
    after do
        ir = info_requests(:other_request)
        incoming_message = ir.incoming_messages[0]
        incoming_message.fully_destroy
    end

end

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
require "external_command"

def mailin_test(email_filename)
    Dir.chdir Rails.root do
        xc = ExternalCommand.new("script/mailin")
        mail = load_file_fixture(email_filename)
        ir = info_requests(:other_request)
        mail.gsub!('EMAIL_TO', ir.incoming_email)
        mail.gsub!('EMAIL_FROM', 'responder@localhost')
        xc.run(mail)
        xc.err.should == ""
        return xc
    end
end

describe "When importing mail into the application" do

    # Turn off transactional fixtures for this suite - incoming message is imported
    # outside the transaction via ExternalCommand, so needs to be destroyed outside the
    # transaction
    self.use_transactional_fixtures = false

    it "should not produce any output and should return a 0 code on importing a plain email" do
        r = mailin_test("incoming-request-empty.email")
        r.status.should == 0
        r.out.should == ""
    end

    # Destroy the incoming message so that it doesn't affect other tests
    after do
        ir = info_requests(:other_request)
        incoming_message = ir.incoming_messages[0]
        incoming_message.fully_destroy
        # And get rid of any remaining purge requests
        PurgeRequest.destroy_all
    end

end

Deal with further side effects of stuff done outside of a transaction in tests
Deal with further side effects of stuff done outside of a transaction in tests
