aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGibheer <gibheer@gmail.com>2013-01-11 08:05:43 +0100
committerGibheer <gibheer@gmail.com>2013-01-11 08:05:43 +0100
commit6fd096d4ab1659192470536ee24ab65e811cc942 (patch)
tree838be71c5a7c6c2f94f119038957bebaad22272d
parent9e83d9d8b5d278d24660e57613fe97f51ffc2033 (diff)
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.
-rw-r--r--spec/unit/zero/request/parameter/element_reader_spec.rb75
-rw-r--r--spec/unit/zero/request/parameter/element_reference_spec.rb56
-rw-r--r--spec/unit/zero/request/parameter/element_writer_spec.rb22
3 files changed, 97 insertions, 56 deletions
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