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