sinatra-rest-helpers 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
@@ -1,6 +1,12 @@
1
1
  require 'rack'
2
2
 
3
3
  module Sinatra
4
+ #
5
+ # Include it with:
6
+ # class App < Sinatra::Base
7
+ # helpers Sinatra::RestHelpers
8
+ # end
9
+ #
4
10
  module RestHelpers
5
11
  INFINITY = 1/0.0
6
12
  # e.g.:
@@ -18,7 +24,8 @@ module Sinatra
18
24
  end.compact.map do |f|
19
25
  generate_type_hash.call(f)
20
26
  end
21
- accepted_formats = request.accept.split(/,\s*/).map do |f|
27
+ # request.accept is an Array
28
+ accepted_formats = request.accept.map do |f|
22
29
  generate_type_hash.call(f)
23
30
  end
24
31
  selected_format = supported_formats.detect{ |supported_format|
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sinatra-rest-helpers}
8
- s.version = "0.3.0"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Cyril Rohr"]
12
- s.date = %q{2009-10-20}
12
+ s.date = %q{2009-10-21}
13
13
  s.description = %q{A set of helpers for sinatra apps that expose REST resources.}
14
14
  s.email = %q{cyril.rohr@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
  "VERSION",
26
26
  "lib/sinatra/rest_helpers.rb",
27
27
  "sinatra-rest-helpers.gemspec",
28
- "spec/sinatra-rest-helpers_spec.rb",
28
+ "spec/sinatra_rest_helpers_spec.rb",
29
29
  "spec/spec_helper.rb"
30
30
  ]
31
31
  s.homepage = %q{http://github.com/cryx/sinatra-rest-helpers}
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
34
34
  s.rubygems_version = %q{1.3.5}
35
35
  s.summary = %q{Adds useful helpers for REST applications developed with Sinatra.}
36
36
  s.test_files = [
37
- "spec/sinatra-rest-helpers_spec.rb",
37
+ "spec/sinatra_rest_helpers_spec.rb",
38
38
  "spec/spec_helper.rb"
39
39
  ]
40
40
 
@@ -25,13 +25,13 @@ describe "SinatraRestHelpers" do
25
25
  Rack::Mime::MIME_TYPES.clear
26
26
  end
27
27
  it "should throw a 406 if the client requested only unsupported formats" do
28
- request = mock("request", :accept => "application/json")
28
+ request = mock("request", :accept => ["application/json"])
29
29
  app = App.new(request)
30
30
  app.should_receive(:halt).with(406, "")
31
31
  app.test_provides!(:json)
32
32
  end
33
33
  it "should not throw a 406 if the client requested a supported format" do
34
- request = mock("request", :accept => "application/json")
34
+ request = mock("request", :accept => ["application/json"])
35
35
  mime :json, "application/json"
36
36
  app = App.new(request)
37
37
  app.should_not_receive(:halt)
@@ -39,51 +39,54 @@ describe "SinatraRestHelpers" do
39
39
  app.response.headers['Content-Type'].should == "application/json"
40
40
  end
41
41
  it "should be case insensitive" do
42
- request = mock("request", :accept => "application/json")
42
+ request = mock("request", :accept => ["application/json"])
43
43
  app = App.new(request)
44
44
  app.should_not_receive(:halt)
45
45
  app.test_provides!("application/JSON")
46
46
  app.response.headers['Content-Type'].should == "application/JSON"
47
47
  end
48
48
  it "should not accept a request with a type level lower than what is supported" do
49
- request = mock("request", :accept => "application/json;level=1")
49
+ request = mock("request", :accept => ["application/json;level=1"])
50
50
  app = App.new(request)
51
51
  app.should_receive(:halt).with(406, "application/json;level=3, application/json;level=2")
52
52
  app.test_provides!("application/json;level=3", "application/json;level=2")
53
53
  end
54
54
  it "should accept a request having a supported mime type, but with no level" do
55
- request = mock("request", :accept => "application/json")
55
+ request = mock("request", :accept => ["application/json"])
56
56
  app = App.new(request)
57
57
  app.should_not_receive(:halt)
58
58
  app.test_provides!("application/json;level=2")
59
59
  app.response.headers['Content-Type'].should == "application/json;level=2"
60
60
  end
61
61
  it "should select the first type matching the criteria" do
62
- request = mock("request", :accept => "application/json;level=2, application/xml, application/vnd.fr.grid5000.api.Cluster+json;level=2")
62
+ request = mock("request", :accept => ["application/json;level=2", "application/xml", "application/vnd.fr.grid5000.api.Cluster+json;level=2"])
63
63
  app = App.new(request)
64
64
  app.should_not_receive(:halt)
65
65
  app.test_provides!("application/json;level=3", "application/vnd.fr.grid5000.api.Cluster+json;level=2")
66
66
  app.response.headers['Content-Type'].should == "application/vnd.fr.grid5000.api.Cluster+json;level=2"
67
67
  end
68
68
  it "should accept requests with a level, even if the developer didn't explicitely defined one" do
69
- request = mock("request", :accept => "application/json;level=1")
69
+ request = mock("request", :accept => ["application/json;level=1"])
70
70
  app = App.new(request)
71
71
  app.should_not_receive(:halt)
72
72
  app.test_provides!("application/json")
73
73
  app.response.headers['Content-Type'].should == "application/json"
74
74
  end
75
75
  it "should correctly deal with widlcard characters [client-side, I]" do
76
- request = mock("request", :accept => "application/vnd.fr.grid5000.api.*+json")
76
+ request = mock("request", :accept => ["application/vnd.fr.grid5000.api.*+json"])
77
77
  app = App.new(request)
78
78
  app.should_not_receive(:halt)
79
79
  app.test_provides!("application/vnd.fr.grid5000.api.Cluster+json;level=1")
80
80
  app.response.headers['Content-Type'].should == "application/vnd.fr.grid5000.api.Cluster+json;level=1"
81
81
  end
82
82
  it "should correctly deal with widlcard characters [client-side, II]" do
83
- request = mock("request", :accept => "application/*")
83
+ request = mock("request", :accept => ["application/*"])
84
84
  app = App.new(request)
85
85
  app.should_not_receive(:halt)
86
86
  app.test_provides!("application/vnd.fr.grid5000.api.Cluster+json;level=1")
87
87
  app.response.headers['Content-Type'].should == "application/vnd.fr.grid5000.api.Cluster+json;level=1"
88
88
  end
89
+ it "should description" do
90
+
91
+ end
89
92
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-rest-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril Rohr
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-20 00:00:00 +02:00
12
+ date: 2009-10-21 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -31,7 +31,7 @@ files:
31
31
  - VERSION
32
32
  - lib/sinatra/rest_helpers.rb
33
33
  - sinatra-rest-helpers.gemspec
34
- - spec/sinatra-rest-helpers_spec.rb
34
+ - spec/sinatra_rest_helpers_spec.rb
35
35
  - spec/spec_helper.rb
36
36
  has_rdoc: true
37
37
  homepage: http://github.com/cryx/sinatra-rest-helpers
@@ -62,5 +62,5 @@ signing_key:
62
62
  specification_version: 3
63
63
  summary: Adds useful helpers for REST applications developed with Sinatra.
64
64
  test_files:
65
- - spec/sinatra-rest-helpers_spec.rb
65
+ - spec/sinatra_rest_helpers_spec.rb
66
66
  - spec/spec_helper.rb