diff options
| author | Gibheer <gibheer@gmail.com> | 2013-01-11 08:05:43 +0100 | 
|---|---|---|
| committer | Gibheer <gibheer@gmail.com> | 2013-01-11 08:05:43 +0100 | 
| commit | 6fd096d4ab1659192470536ee24ab65e811cc942 (patch) | |
| tree | 838be71c5a7c6c2f94f119038957bebaad22272d /spec | |
| parent | 9e83d9d8b5d278d24660e57613fe97f51ffc2033 (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.
Diffstat (limited to 'spec')
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 | 
