0
0
Fork 0

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:
Gibheer 2013-01-11 08:05:43 +01:00
parent 9e83d9d8b5
commit 6fd096d4ab
3 changed files with 97 additions and 56 deletions

View File

@ -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

View File

@ -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

View File

@ -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