diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/factories/raw_emails.rb | 2 | ||||
-rw-r--r-- | spec/models/raw_email_spec.rb | 47 |
2 files changed, 38 insertions, 11 deletions
diff --git a/spec/factories/raw_emails.rb b/spec/factories/raw_emails.rb index 30fb24c37..b271515d2 100644 --- a/spec/factories/raw_emails.rb +++ b/spec/factories/raw_emails.rb @@ -1,5 +1,3 @@ FactoryGirl.define do - factory :raw_email - end diff --git a/spec/models/raw_email_spec.rb b/spec/models/raw_email_spec.rb index cbd7d71a5..8e0d3b457 100644 --- a/spec/models/raw_email_spec.rb +++ b/spec/models/raw_email_spec.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- # == Schema Information # # Table name: raw_emails @@ -9,18 +10,46 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') describe RawEmail do + def roundtrip_data(raw_email, data) + raw_email.data = data + raw_email.save! + raw_email.reload + raw_email.data + end + describe :data do it 'roundtrips data unchanged' do - raw_email = RawEmail.new - incoming_message = mock_model(IncomingMessage) - info_request = mock_model(InfoRequest) - incoming_message.stub!(:info_request).and_return(info_request) - raw_email.stub!(:incoming_message).and_return(incoming_message) - raw_email.data = "Hello, world!" - raw_email.save! - raw_email.reload - raw_email.data.should == "Hello, world!" + raw_email = FactoryGirl.create(:incoming_message).raw_email + data = roundtrip_data(raw_email, "Hello, world!") + data.should == "Hello, world!" + end + + it 'returns an unchanged binary string with a valid encoding if the data is non-ascii and non-utf-8' do + raw_email = FactoryGirl.create(:incoming_message).raw_email + data = roundtrip_data(raw_email, "\xA0") + + if data.respond_to?(:encoding) + data.encoding.to_s.should == 'ASCII-8BIT' + data.valid_encoding?.should be_true + data = data.force_encoding('UTF-8') + end + data.should == "\xA0" + end + + end + + describe :data_as_text do + + it 'returns a utf-8 string with a valid encoding if the data is non-ascii and non-utf8' do + raw_email = FactoryGirl.create(:incoming_message).raw_email + roundtrip_data(raw_email, "\xA0ccc") + data_as_text = raw_email.data_as_text + data_as_text.should == "ccc" + if data_as_text.respond_to?(:encoding) + data_as_text.encoding.to_s.should == 'UTF-8' + data_as_text.valid_encoding?.should be_true + end end end |