From 6fd096d4ab1659192470536ee24ab65e811cc942 Mon Sep 17 00:00:00 2001 From: Gibheer Date: Fri, 11 Jan 2013 08:05:43 +0100 Subject: [PATCH] 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. --- .../request/parameter/element_reader_spec.rb | 75 +++++++++++++++++++ .../parameter/element_reference_spec.rb | 56 -------------- .../request/parameter/element_writer_spec.rb | 22 ++++++ 3 files changed, 97 insertions(+), 56 deletions(-) create mode 100644 spec/unit/zero/request/parameter/element_reader_spec.rb delete mode 100644 spec/unit/zero/request/parameter/element_reference_spec.rb create mode 100644 spec/unit/zero/request/parameter/element_writer_spec.rb diff --git a/spec/unit/zero/request/parameter/element_reader_spec.rb b/spec/unit/zero/request/parameter/element_reader_spec.rb new file mode 100644 index 0000000..61b2668 --- /dev/null +++ b/spec/unit/zero/request/parameter/element_reader_spec.rb @@ -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 diff --git a/spec/unit/zero/request/parameter/element_reference_spec.rb b/spec/unit/zero/request/parameter/element_reference_spec.rb deleted file mode 100644 index 1136eae..0000000 --- a/spec/unit/zero/request/parameter/element_reference_spec.rb +++ /dev/null @@ -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 diff --git a/spec/unit/zero/request/parameter/element_writer_spec.rb b/spec/unit/zero/request/parameter/element_writer_spec.rb new file mode 100644 index 0000000..c9ffe50 --- /dev/null +++ b/spec/unit/zero/request/parameter/element_writer_spec.rb @@ -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