yodatra 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c28dec8ba275bce4a44a79d41f2c3aac9a265e5e
4
+ data.tar.gz: f516d481e2e6ad9ce2c49ab3805584f1e0bfa270
5
+ SHA512:
6
+ metadata.gz: bb2fb3841624fb4f869286779ed5c7a1b28e84165b8dca7f09cb3a577c7f01acb1f0fc851ceb143bef3d3ede66eff5b8a6a55d72aef1a07f8d4964b00e9f5a31
7
+ data.tar.gz: a97295b4414f0939ec2d9ad263ecfadd6b807a80130cfc5642f781a955fadc88e32867e4ef5da82418719b633f59aaefb4d5fae5124401bf37450e528f98ed71
@@ -184,7 +184,14 @@ module Yodatra
184
184
 
185
185
  unless parent_model.nil?
186
186
  parent = parent_model.find params[:captures].second
187
- resources = parent.send(involved.to_sym) unless parent.reflections[involved.to_sym].nil?
187
+ if parent.respond_to? :reflections
188
+ # This is AR 4.0.x compatibility
189
+ has_association = !parent.reflections[involved.to_sym].nil?
190
+ else
191
+ # This is AR 4.1.x compatibility
192
+ has_association = !parent._reflections[involved.to_sym].nil?
193
+ end
194
+ resources = parent.send(involved.to_sym) if has_association
188
195
  end
189
196
  resources
190
197
  rescue ActiveRecord::RecordNotFound
@@ -1,3 +1,3 @@
1
1
  module Yodatra
2
- VERSION = '0.3.4'
2
+ VERSION = '0.3.5'
3
3
  end
@@ -1,12 +1,15 @@
1
1
  ENV['RACK_ENV'] ||= 'test'
2
2
  require 'simplecov'
3
- SimpleCov.start
3
+ SimpleCov.start do
4
+ add_filter 'spec/'
5
+ end
4
6
  require 'coveralls'
5
7
  Coveralls.wear!
6
8
  require 'rack/test'
7
9
  require 'rspec'
8
10
 
9
11
  require File.expand_path '../../lib/yodatra.rb', __FILE__
12
+ require File.expand_path '../../lib/yodatra/api_formatter.rb', __FILE__
10
13
  require File.expand_path '../../lib/yodatra/models_controller.rb', __FILE__
11
14
  require File.expand_path '../data/ar_models_controller.rb', __FILE__
12
15
 
@@ -15,6 +18,7 @@ module RSpecMixin
15
18
  def app
16
19
  Sinatra.new {
17
20
  use Yodatra::Base
21
+ use Yodatra::ApiFormatter
18
22
  use Yodatra::ModelsController
19
23
  use ArModelsController
20
24
  }
@@ -0,0 +1,33 @@
1
+ require File.expand_path '../../spec_helper.rb', __FILE__
2
+
3
+ describe Yodatra::ApiFormatter do
4
+ let(:app) { proc{[200,{},['Hello, world.']]} }
5
+
6
+ before do
7
+ @stack = Yodatra::ApiFormatter.new(app, &bloc)
8
+ @request = Rack::MockRequest.new(@stack)
9
+ end
10
+
11
+ context 'with a unity bloc' do
12
+ let(:bloc) { proc{ |s,h,r| [s,h,r] } }
13
+
14
+ it 'transforms the response with the given block' do
15
+ response = @request.get('/')
16
+ expect(response.body).to eq 'Hello, world.'
17
+ end
18
+ end
19
+
20
+ context 'with an object wrapper bloc' do
21
+ let(:bloc) do
22
+ proc do |s,h,r|
23
+ transformed = r.map{ |rr| {data: rr}.to_json }
24
+ [s,h,transformed]
25
+ end
26
+ end
27
+
28
+ it 'transforms the response with the given block' do
29
+ response = @request.get('/')
30
+ expect(JSON.parse(response.body)['data']).to eq 'Hello, world.'
31
+ end
32
+ end
33
+ end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yodatra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
5
- prerelease:
4
+ version: 0.3.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Paul Bonaud
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-08-19 00:00:00.000000000 Z
11
+ date: 2014-08-23 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rack
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,83 +27,74 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: sinatra
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
37
33
  version: 1.4.4
38
- - - ! '>='
34
+ - - '>='
39
35
  - !ruby/object:Gem::Version
40
36
  version: 1.4.4
41
37
  type: :runtime
42
38
  prerelease: false
43
39
  version_requirements: !ruby/object:Gem::Requirement
44
- none: false
45
40
  requirements:
46
41
  - - ~>
47
42
  - !ruby/object:Gem::Version
48
43
  version: 1.4.4
49
- - - ! '>='
44
+ - - '>='
50
45
  - !ruby/object:Gem::Version
51
46
  version: 1.4.4
52
47
  - !ruby/object:Gem::Dependency
53
48
  name: sinatra-activerecord
54
49
  requirement: !ruby/object:Gem::Requirement
55
- none: false
56
50
  requirements:
57
- - - ! '>='
51
+ - - '>='
58
52
  - !ruby/object:Gem::Version
59
53
  version: 1.2.4
60
54
  type: :runtime
61
55
  prerelease: false
62
56
  version_requirements: !ruby/object:Gem::Requirement
63
- none: false
64
57
  requirements:
65
- - - ! '>='
58
+ - - '>='
66
59
  - !ruby/object:Gem::Version
67
60
  version: 1.2.4
68
61
  - !ruby/object:Gem::Dependency
69
62
  name: sinatra-logger
70
63
  requirement: !ruby/object:Gem::Requirement
71
- none: false
72
64
  requirements:
73
- - - ! '>='
65
+ - - '>='
74
66
  - !ruby/object:Gem::Version
75
67
  version: '0'
76
68
  type: :runtime
77
69
  prerelease: false
78
70
  version_requirements: !ruby/object:Gem::Requirement
79
- none: false
80
71
  requirements:
81
- - - ! '>='
72
+ - - '>='
82
73
  - !ruby/object:Gem::Version
83
74
  version: '0'
84
75
  - !ruby/object:Gem::Dependency
85
76
  name: sinatra-contrib
86
77
  requirement: !ruby/object:Gem::Requirement
87
- none: false
88
78
  requirements:
89
79
  - - ~>
90
80
  - !ruby/object:Gem::Version
91
81
  version: 1.4.2
92
- - - ! '>='
82
+ - - '>='
93
83
  - !ruby/object:Gem::Version
94
84
  version: 1.4.2
95
85
  type: :runtime
96
86
  prerelease: false
97
87
  version_requirements: !ruby/object:Gem::Requirement
98
- none: false
99
88
  requirements:
100
89
  - - ~>
101
90
  - !ruby/object:Gem::Version
102
91
  version: 1.4.2
103
- - - ! '>='
92
+ - - '>='
104
93
  - !ruby/object:Gem::Version
105
94
  version: 1.4.2
106
95
  - !ruby/object:Gem::Dependency
107
96
  name: rack-protection
108
97
  requirement: !ruby/object:Gem::Requirement
109
- none: false
110
98
  requirements:
111
99
  - - ~>
112
100
  - !ruby/object:Gem::Version
@@ -114,7 +102,6 @@ dependencies:
114
102
  type: :runtime
115
103
  prerelease: false
116
104
  version_requirements: !ruby/object:Gem::Requirement
117
- none: false
118
105
  requirements:
119
106
  - - ~>
120
107
  - !ruby/object:Gem::Version
@@ -147,12 +134,14 @@ files:
147
134
  - spec/data/ar_models_controller.rb
148
135
  - spec/data/model.rb
149
136
  - spec/spec_helper.rb
137
+ - spec/unit/api_formatter_spec.rb
150
138
  - spec/unit/models_controller_spec.rb
151
139
  - spec/unit/throttling_spec.rb
152
140
  - yodatra.gemspec
153
141
  homepage: http://squareteam.github.io/yodatra
154
142
  licenses:
155
143
  - MIT
144
+ metadata: {}
156
145
  post_install_message:
157
146
  rdoc_options:
158
147
  - --line-numbers
@@ -165,24 +154,22 @@ rdoc_options:
165
154
  require_paths:
166
155
  - lib
167
156
  required_ruby_version: !ruby/object:Gem::Requirement
168
- none: false
169
157
  requirements:
170
- - - ! '>='
158
+ - - '>='
171
159
  - !ruby/object:Gem::Version
172
160
  version: '0'
173
161
  required_rubygems_version: !ruby/object:Gem::Requirement
174
- none: false
175
162
  requirements:
176
- - - ! '>='
163
+ - - '>='
177
164
  - !ruby/object:Gem::Version
178
165
  version: '0'
179
166
  requirements: []
180
167
  rubyforge_project:
181
- rubygems_version: 1.8.25
168
+ rubygems_version: 2.0.3
182
169
  signing_key:
183
- specification_version: 3
170
+ specification_version: 4
184
171
  summary: Classy backend development with the speed of Sinatra and the power of ActiveRecord
185
172
  test_files:
173
+ - spec/unit/api_formatter_spec.rb
186
174
  - spec/unit/models_controller_spec.rb
187
175
  - spec/unit/throttling_spec.rb
188
- has_rdoc: