cathode 0.1.0 → 0.1.1

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.
@@ -4,7 +4,9 @@ def make_request(method, path, params = nil, version = '1.0.0')
4
4
  send(method, path, params, 'Accept-Version' => version)
5
5
  end
6
6
 
7
- def request_spec(method, path, params = nil, &block)
7
+ def request_spec(method, pre_path, params = nil, &block)
8
+ let(:path) { pre_path.is_a?(String) ? pre_path : instance_eval(&pre_path) }
9
+
8
10
  context 'without version header' do
9
11
  subject { send(method, path, params) }
10
12
 
@@ -42,7 +44,7 @@ describe 'API' do
42
44
 
43
45
  it 'makes a request' do
44
46
  make_request :get, 'api/products'
45
- expect(response.body).to eq(products.to_json)
47
+ expect(JSON.parse(response.body).map { |i| i['title'] }).to eq(products.map(&:title))
46
48
  end
47
49
  end
48
50
 
@@ -67,16 +69,16 @@ describe 'API' do
67
69
  request_spec :get, 'api/products', nil do
68
70
  it 'responds with all records' do
69
71
  subject
70
- expect(response.body).to eq(products.to_json)
72
+ expect(JSON.parse(response.body).map { |i| i['title'] }).to eq(products.map(&:title))
71
73
  end
72
74
  end
73
75
  end
74
76
 
75
77
  describe 'show' do
76
- request_spec :get, 'api/products/1' do
78
+ request_spec :get, proc { "api/products/#{products.first.id}" } do
77
79
  it 'responds with all records' do
78
80
  subject
79
- expect(response.body).to eq(products.first.to_json)
81
+ expect(JSON.parse(response.body)['title']).to eq(products.first.title)
80
82
  end
81
83
  end
82
84
  end
@@ -93,7 +95,7 @@ describe 'API' do
93
95
  end
94
96
 
95
97
  describe 'update' do
96
- request_spec :put, 'api/products/1', product: { title: 'goodbye' } do
98
+ request_spec :put, proc { "api/products/#{products.first.id}" }, product: { title: 'goodbye' } do
97
99
  it 'responds with the updated record' do
98
100
  subject
99
101
  expect(JSON.parse(response.body)['title']).to eq('goodbye')
@@ -102,7 +104,7 @@ describe 'API' do
102
104
  end
103
105
 
104
106
  describe 'destroy' do
105
- request_spec :delete, 'api/products/5' do
107
+ request_spec :delete, proc { "api/products/#{products.last.id}" } do
106
108
  it 'responds with success' do
107
109
  expect(subject).to eq(200)
108
110
  end
@@ -140,7 +142,7 @@ describe 'API' do
140
142
  make_request :get, 'api/products', nil, '1.0'
141
143
  expect(response.status).to eq(200)
142
144
 
143
- make_request :get, 'api/products/1', nil, '1.0'
145
+ make_request :get, "api/products/#{product.id}", nil, '1.0'
144
146
  expect(response.status).to eq(200)
145
147
 
146
148
  make_request :get, 'api/sales', nil, '1.0'
@@ -152,7 +154,7 @@ describe 'API' do
152
154
  make_request :get, 'api/sales', nil, '1.1.0'
153
155
  expect(response.status).to eq(404)
154
156
 
155
- make_request :get, 'api/products/1', nil, '1.1.0'
157
+ make_request :get, "api/products/#{product.id}", nil, '1.1.0'
156
158
  expect(response.status).to eq(200)
157
159
 
158
160
  make_request :get, 'api/products', nil, '1.1.0'
@@ -257,7 +259,7 @@ describe 'API' do
257
259
 
258
260
  context 'with has_many association' do
259
261
  it 'uses the associations to get the records' do
260
- make_request :get, 'api/products/1/sales'
262
+ make_request :get, "api/products/#{product.id}/sales"
261
263
  expect(response.status).to eq(200)
262
264
  expect(response.body).to eq(Sale.all.to_json)
263
265
  end
@@ -265,29 +267,29 @@ describe 'API' do
265
267
 
266
268
  context 'with has_one association' do
267
269
  context ':show' do
268
- let!(:payment) { create(:payment, sale: sale) }
270
+ let!(:payment) { create(:payment, amount: 323, sale: sale) }
269
271
 
270
272
  it 'gets the association record' do
271
- make_request :get, 'api/sales/1/payment'
273
+ make_request :get, "api/sales/#{sale.id}/payment"
272
274
  expect(response.status).to eq(200)
273
- expect(response.body).to eq(payment.to_json)
275
+ expect(JSON.parse(response.body)['amount']).to eq(323)
274
276
  end
275
277
  end
276
278
 
277
279
  context ':create' do
278
- subject { make_request :post, 'api/sales/1/payment', { payment: { amount: 500 } } }
280
+ subject { make_request :post, "api/sales/#{sale.id}/payment", { payment: { amount: 500 } } }
279
281
 
280
282
  it 'adds a new record associated with the parent' do
281
283
  expect { subject }.to change(Payment, :count).by(1)
282
284
  expect(Payment.last.sale).to eq(sale)
283
285
  expect(response.status).to eq(200)
284
- expect(response.body).to eq(Payment.last.to_json)
286
+ expect(JSON.parse(response.body)['amount']).to eq(500)
285
287
  end
286
288
  end
287
289
 
288
290
  context ':update' do
289
291
  let!(:payment) { create(:payment, amount: 200, sale: sale) }
290
- subject { make_request :put, 'api/sales/1/payment', { payment: { amount: 500 } } }
292
+ subject { make_request :put, "api/sales/#{sale.id}/payment", { payment: { amount: 500 } } }
291
293
 
292
294
  it 'updates the associated record' do
293
295
  expect { subject }.to_not change(Payment, :count).by(1)
@@ -298,7 +300,7 @@ describe 'API' do
298
300
 
299
301
  context ':destroy' do
300
302
  let!(:payment) { create(:payment, amount: 200, sale: sale) }
301
- subject { make_request :delete, 'api/sales/1/payment' }
303
+ subject { make_request :delete, "api/sales/#{sale.id}/payment" }
302
304
 
303
305
  it 'deletes the associated record' do
304
306
  expect { subject }.to change(Payment, :count).by(-1)
@@ -313,9 +315,9 @@ describe 'API' do
313
315
  let!(:payment) { create(:payment, sale: sale) }
314
316
 
315
317
  it 'gets the association record' do
316
- make_request :get, 'api/payments/1/sale'
318
+ make_request :get, "api/payments/#{payment.id}/sale"
317
319
  expect(response.status).to eq(200)
318
- expect(response.body).to eq(sale.to_json)
320
+ expect(JSON.parse(response.body)['product_id']).to eq(product.id)
319
321
  end
320
322
  end
321
323
  end
@@ -10,7 +10,7 @@ describe Cathode::ShowRequest do
10
10
  end
11
11
  end
12
12
 
13
- let(:params) { { id: 3 } }
13
+ let(:params) { { id: Product.all[2] } }
14
14
  let!(:products) { create_list(:product, 3) }
15
15
 
16
16
  it 'sets status as ok' do
@@ -1,14 +1,11 @@
1
1
  ENV['RAILS_ENV'] ||= 'test'
2
2
 
3
- require 'coveralls'
4
- Coveralls.wear!
5
-
6
3
  require File.expand_path('../dummy/config/environment.rb', __FILE__)
7
4
  require 'rspec/rails'
8
5
  require 'rspec/autorun'
9
6
  require 'factory_girl_rails'
10
7
  require 'timecop'
11
- require 'pry'
8
+ require 'pry' if Gem::Specification::find_all_by_name('pry').any?
12
9
 
13
10
  Rails.backtrace_cleaner.remove_silencers!
14
11
 
@@ -24,6 +21,8 @@ RSpec.configure do |config|
24
21
  config.include FactoryGirl::Syntax::Methods
25
22
  config.include SpecHelpers
26
23
 
24
+ puts "Testing against database adapter: #{ActiveRecord::Base.connection_config[:adapter]}"
25
+
27
26
  config.after(:each) do
28
27
  Cathode::BaseController.subclasses.each do |controller|
29
28
  name = controller.name.try(:demodulize)
@@ -1,3 +1,7 @@
1
1
  FactoryGirl.define do
2
- factory :product
2
+ factory :product do
3
+ sequence :title do |n|
4
+ "Product #{n}"
5
+ end
6
+ end
3
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cathode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Moby, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-29 00:00:00.000000000 Z
11
+ date: 2014-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack-cors
@@ -150,20 +150,6 @@ dependencies:
150
150
  - - ~>
151
151
  - !ruby/object:Gem::Version
152
152
  version: 0.20.1
153
- - !ruby/object:Gem::Dependency
154
- name: sqlite3
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ~>
158
- - !ruby/object:Gem::Version
159
- version: 1.3.9
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ~>
165
- - !ruby/object:Gem::Version
166
- version: 1.3.9
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: timecop
169
155
  requirement: !ruby/object:Gem::Requirement
@@ -247,6 +233,7 @@ files:
247
233
  - spec/dummy/bin/rake
248
234
  - spec/dummy/config/application.rb
249
235
  - spec/dummy/config/boot.rb
236
+ - spec/dummy/config/database.travis.yml
250
237
  - spec/dummy/config/database.yml
251
238
  - spec/dummy/config/environment.rb
252
239
  - spec/dummy/config/environments/development.rb
@@ -316,7 +303,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
316
303
  requirements:
317
304
  - - '>='
318
305
  - !ruby/object:Gem::Version
319
- version: '0'
306
+ version: 1.9.3
320
307
  required_rubygems_version: !ruby/object:Gem::Requirement
321
308
  requirements:
322
309
  - - '>='
@@ -344,6 +331,7 @@ test_files:
344
331
  - spec/dummy/bin/rake
345
332
  - spec/dummy/config/application.rb
346
333
  - spec/dummy/config/boot.rb
334
+ - spec/dummy/config/database.travis.yml
347
335
  - spec/dummy/config/database.yml
348
336
  - spec/dummy/config/environment.rb
349
337
  - spec/dummy/config/environments/development.rb