cathode 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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