|
7 | 7 |
|
8 | 8 | describe Protocol::HTTP::Header::Accept::MediaRange do
|
9 | 9 | it "should have default quality_factor of 1.0" do
|
10 |
| - language = subject.new("text/plain", nil) |
11 |
| - expect(language.quality_factor).to be == 1.0 |
| 10 | + media_range = subject.new("text/plain", nil) |
| 11 | + expect(media_range.quality_factor).to be == 1.0 |
| 12 | + end |
| 13 | + |
| 14 | + with "#===" do |
| 15 | + let(:media_range) {subject.new("text", "plain")} |
| 16 | + |
| 17 | + it "can compare with bare string" do |
| 18 | + expect(media_range).to be === "text/plain" |
| 19 | + end |
| 20 | + |
| 21 | + it "can compare with media range" do |
| 22 | + expect(media_range).to be === media_range |
| 23 | + end |
| 24 | + end |
| 25 | + |
| 26 | + with "#to_s" do |
| 27 | + it "can convert to string" do |
| 28 | + media_range = subject.new("text", "plain", {"q" => "0.5"}) |
| 29 | + expect(media_range.to_s).to be == "text/plain;q=0.5" |
| 30 | + end |
| 31 | + end |
| 32 | + |
| 33 | + with "#split" do |
| 34 | + it "can split media range" do |
| 35 | + media_range = subject.new("text", "plain", {"q" => "0.5"}) |
| 36 | + type, subtype = media_range.split |
| 37 | + expect(type).to be == "text" |
| 38 | + expect(subtype).to be == "plain" |
| 39 | + end |
12 | 40 | end
|
13 | 41 | end
|
14 | 42 |
|
|
20 | 48 | it "can parse media ranges" do
|
21 | 49 | expect(header.length).to be == 3
|
22 | 50 |
|
23 |
| - expect(media_ranges[0].mime_type).to be == "text/plain" |
| 51 | + expect(media_ranges[0].range_string).to be == "text/plain" |
24 | 52 | expect(media_ranges[0].quality_factor).to be == 1.0
|
25 | 53 |
|
26 |
| - expect(media_ranges[1].mime_type).to be == "text/html" |
| 54 | + expect(media_ranges[1].range_string).to be == "text/html" |
27 | 55 | expect(media_ranges[1].quality_factor).to be == 0.5
|
28 | 56 |
|
29 |
| - expect(media_ranges[2].mime_type).to be == "text/xml" |
30 |
| - expect(media_ranges[2].quality_factor).to be == 0.25 |
| 57 | + expect(media_ranges[2].range_string).to be == "text/xml" |
| 58 | + end |
| 59 | + |
| 60 | + it "can convert to string" do |
| 61 | + expect(header.to_s).to be == "text/plain,text/html;q=0.5,text/xml;q=0.25" |
| 62 | + end |
| 63 | + end |
| 64 | + |
| 65 | + with "foobar" do |
| 66 | + it "fails to parse" do |
| 67 | + expect{media_ranges}.to raise_exception(Protocol::HTTP::Header::Accept::ParseError) |
31 | 68 | end
|
32 | 69 | end
|
33 | 70 |
|
34 | 71 | with "text/html;q=0.25, text/xml;q=0.5, text/plain" do
|
35 | 72 | it "should order based on quality factor" do
|
36 |
| - expect(media_ranges.collect(&:mime_type)).to be == %w{text/plain text/xml text/html} |
| 73 | + expect(media_ranges.collect(&:range_string)).to be == %w{text/plain text/xml text/html} |
37 | 74 | end
|
38 | 75 | end
|
39 | 76 |
|
40 | 77 | with "text/html, text/plain;q=0.8, text/xml;q=0.6, application/json" do
|
41 | 78 | it "should order based on quality factor" do
|
42 |
| - expect(media_ranges.collect(&:mime_type)).to be == %w{text/html application/json text/plain text/xml} |
| 79 | + expect(media_ranges.collect(&:range_string)).to be == %w{text/html application/json text/plain text/xml} |
43 | 80 | end
|
44 | 81 | end
|
45 | 82 |
|
46 | 83 | with "*/*;q=0" do
|
47 | 84 | it "should accept wildcard media range" do
|
48 |
| - expect(media_ranges[0].mime_type).to be == "*/*" |
| 85 | + expect(media_ranges[0].range_string).to be == "*/*" |
49 | 86 | expect(media_ranges[0].quality_factor).to be == 0
|
50 | 87 | end
|
51 | 88 | end
|
|
0 commit comments