diff options
Diffstat (limited to 'spec/unit/request/accept')
| -rw-r--r-- | spec/unit/request/accept/preferred_spec.rb | 36 | 
1 files changed, 36 insertions, 0 deletions
diff --git a/spec/unit/request/accept/preferred_spec.rb b/spec/unit/request/accept/preferred_spec.rb new file mode 100644 index 0000000..5d11799 --- /dev/null +++ b/spec/unit/request/accept/preferred_spec.rb @@ -0,0 +1,36 @@ +require 'spec_helper' + +describe Zero::Request::Accept, '#preferred' do +  subject { Zero::Request::Accept } +  let(:html) { 'text/html' } +  let(:json) { 'application/json' } +  let(:foo)  { 'text/foo' } +  let(:lower_quality) { foo + ';q=0.5' } +  let(:default) { '*/*;q=0.1' } +  let(:simple_accept)  { [html, json].join(',') } +  let(:quality_accept) { [html, lower_quality, default].join(',') } +  let(:random_accept)  { [lower_quality, default, html].join(',') } +  let(:lower_accept)   { [lower_quality, default].join(',') } +   +  context 'without mapping' do +    before :each do +      # reset the mapping to nothing +      Zero::Request::Accept.map = {} +    end + +    it { subject.new(html).preferred.should           == html } +    it { subject.new(json).preferred.should           == json } +    it { subject.new(simple_accept).preferred.should  == html } +    it { subject.new(quality_accept).preferred.should == html } +    it { subject.new(random_accept).preferred.should  == html } +    it { subject.new(lower_accept).preferred.should   == foo } +  end + +  context 'with mapping' do +    before :all do +      Zero::Request::Accept.map = {'text/html' => 'html'} +    end + +    it { subject.new(html).preferred.should == 'html' } +  end +end  | 
