split of specs for [] and []=
As mutant can't use one spec file for both methods it got split up into two. I also cleaned up the tests and made them (hopefully) better readable.
This commit is contained in:
parent
9e83d9d8b5
commit
6fd096d4ab
|
@ -0,0 +1,75 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Zero::Request::Parameter, '#[]' do
|
||||
let(:object) { described_class.new(env) }
|
||||
subject { object[key] }
|
||||
|
||||
let(:query) { '' }
|
||||
let(:post) { {} }
|
||||
let(:custom) { {} }
|
||||
let(:env_get) { environment("/foo?#{query}", {:custom => custom})}
|
||||
let(:env_post) { environment("/foo?#{query}",{:payload => post, :custom => custom}) }
|
||||
|
||||
let(:key) { 'foo' }
|
||||
let(:value) { 'correct' }
|
||||
let(:fake_value) { 'wrong' }
|
||||
|
||||
shared_examples_for 'a parameter' do
|
||||
it { should eq(value) }
|
||||
end
|
||||
|
||||
context 'with custom set key' do
|
||||
let(:env) { env_get }
|
||||
before do
|
||||
object[key] = value
|
||||
end
|
||||
|
||||
it_behaves_like 'a parameter'
|
||||
end
|
||||
|
||||
context 'with a custom set key from an environment' do
|
||||
let(:custom) { {key => value} }
|
||||
let(:env) { env_get }
|
||||
|
||||
it_behaves_like 'a parameter'
|
||||
end
|
||||
|
||||
context 'with query parameters' do
|
||||
let(:query) { "#{key}=#{value}" }
|
||||
let(:env) { env_get }
|
||||
|
||||
it_behaves_like 'a parameter'
|
||||
end
|
||||
|
||||
context 'with query and custom parameter' do
|
||||
let(:custom) { {key => value} }
|
||||
let(:query) { "#{key}=#{fake_value}" }
|
||||
let(:env) { env_get }
|
||||
|
||||
it_behaves_like 'a parameter'
|
||||
end
|
||||
|
||||
context 'with query and post parameter' do
|
||||
let(:post) { {key => value} }
|
||||
let(:query) { "#{key}=#{fake_value}" }
|
||||
let(:env) { env_post }
|
||||
|
||||
it_behaves_like 'a parameter'
|
||||
end
|
||||
|
||||
context 'with query, post and custom parameter' do
|
||||
let(:custom) { {key => value} }
|
||||
let(:query) { "#{key}=#{fake_value}" }
|
||||
let(:post) { {key => fake_value} }
|
||||
let(:env) { env_post }
|
||||
|
||||
it_behaves_like 'a parameter'
|
||||
end
|
||||
|
||||
context 'with no parameter set' do
|
||||
let(:env) { env_get }
|
||||
let(:value) { nil }
|
||||
|
||||
it_behaves_like 'a parameter'
|
||||
end
|
||||
end
|
|
@ -1,56 +0,0 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Zero::Request::Parameter, '#[]' do
|
||||
subject { Zero::Request::Parameter.new(env) }
|
||||
|
||||
context 'without parameters' do
|
||||
let(:env) { EnvGenerator.get('/foo') }
|
||||
|
||||
it 'returns the custom parameter' do
|
||||
subject['foo'] = 'bar'
|
||||
expect(subject['foo']).to eq('bar')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with query parameters' do
|
||||
let(:env) { EnvGenerator.get('/foo?foo=bar') }
|
||||
|
||||
it 'returns the query parameter' do
|
||||
expect(subject['foo']).to eq('bar')
|
||||
end
|
||||
|
||||
it 'returns the custom parameter' do
|
||||
subject['foo'] = 'baz'
|
||||
expect(subject['foo']).to eq('baz')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with payload parameters' do
|
||||
let(:env) do
|
||||
EnvGenerator.post('/foo', {
|
||||
:input => 'foo=bar', 'CONTENT_TYPE' => 'multipart/form-data'
|
||||
})
|
||||
end
|
||||
|
||||
it 'returns the payload value' do
|
||||
expect(subject['foo']).to eq('bar')
|
||||
end
|
||||
|
||||
it 'returns the custom parameter' do
|
||||
subject['foo'] = 'baz'
|
||||
expect(subject['foo']).to eq('baz')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with query and payload parameters' do
|
||||
let(:env) do
|
||||
EnvGenerator.post('/foo?foo=baz', {
|
||||
:input => 'foo=bar', 'CONTENT_TYPE' => 'multipart/form-data'
|
||||
})
|
||||
end
|
||||
|
||||
it 'returns the payload parameter' do
|
||||
expect(subject['foo']).to eq('bar')
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,22 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Zero::Request::Parameter, '#[]=' do
|
||||
subject { described_class.new(env) }
|
||||
let(:env) { environment }
|
||||
|
||||
let(:key) { 'foo' }
|
||||
let(:wrong) { 'wrong' }
|
||||
let(:correct) { 'correct' }
|
||||
|
||||
it 'sets the key as a custom parameter' do
|
||||
subject[key] = correct
|
||||
expect(subject.custom[key]).to eq(correct)
|
||||
end
|
||||
|
||||
it 'overwrites the key value' do
|
||||
subject[key] = wrong
|
||||
subject[key] = correct
|
||||
|
||||
expect(subject.custom[key]).to eq(correct)
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue