spec/receiver/base_spec.rb in multi_mail-0.0.2 vs spec/receiver/base_spec.rb in multi_mail-0.1.0
- old
+ new
@@ -1,10 +1,10 @@
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
describe MultiMail::Receiver::Base do
let :klass do
- Class.new(MultiMail::Service) do
+ Class.new do
include MultiMail::Receiver::Base
def valid?(params)
params['foo'] == 1
end
@@ -34,31 +34,38 @@
expect{ service.process('foo' => 0) }.to raise_error(MultiMail::ForgedRequest)
end
end
describe '#parse' do
+ let :expected do
+ {'foo' => '1', 'bar' => ['1', '1']}
+ end
+
it 'should parse JSON' do
- klass.parse('{"foo":1,"bar":1,"bar":1}').should == {'foo' => 1, 'bar' => 1}
+ klass.parse('{"foo":"1","bar":["1","1"]}').should == expected
end
it 'should parse raw POST data' do
- klass.parse('foo=1&bar=1&bar=1').should == {'foo' => '1', 'bar' => ['1', '1']}
+ klass.parse('foo=1&bar=1&bar=1').should == expected
end
it 'should accept an array' do
- klass.parse([['foo', 1], ['bar', [1, 1]]]).should == {'foo' => 1, 'bar' => [1, 1]}
+ klass.parse([['foo', '1'], ['bar', ['1', '1']]]).should == expected
end
- it 'should accept a Rack::Request object' do
- klass.parse(Rack::Request.new(Rack::MockRequest.env_for('/?foo=1&bar[]=1&bar[]=1'))).should == {'foo' => '1', 'bar' => ['1', '1']}
- end
-
it 'should pass-through a hash' do
- klass.parse('foo' => 1).should == {'foo' => 1}
+ klass.parse({'foo' => '1', 'bar' => ['1', '1']}).should == expected
end
it 'should raise an error if the argument is invalid' do
expect{ klass.parse(1) }.to raise_error(ArgumentError, "Can't handle Fixnum input")
+ end
+
+ it 'should accept a Rack::Request object' do
+ params = klass.parse(Rack::Request.new(Rack::MockRequest.env_for('/?foo=1&bar[]=1&bar[]=1')))
+ params['env'].should be_a(Hash)
+ params.delete('env')
+ params.should == expected
end
end
describe '#add_file_arguments' do
it 'should handle a regular attachment' do