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
75
spec/unit/zero/request/parameter/element_reader_spec.rb
Normal file
75
spec/unit/zero/request/parameter/element_reader_spec.rb
Normal 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
|
@ -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
|
|
22
spec/unit/zero/request/parameter/element_writer_spec.rb
Normal file
22
spec/unit/zero/request/parameter/element_writer_spec.rb
Normal 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
|
Loading…
Reference in New Issue
Block a user