yodatra 0.3.4 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: