summaryrefslogtreecommitdiff
path: root/spec/unit/request/accept/preferred_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit/request/accept/preferred_spec.rb')
-rw-r--r--spec/unit/request/accept/preferred_spec.rb36
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