active_record_api-rest 0.0.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc6be5e661d2f86fc54c4f57906334b1edbfa98af328899dec021c6fba7473cf
4
- data.tar.gz: 0afed262417beb1773c94857e633962908b24f3574027f141a6d1d9dfb199dc9
3
+ metadata.gz: 6fa1955af8c25e2210994802eb09bdbfbdb5a38c76092ee6bcbf202b5e5ef997
4
+ data.tar.gz: be2e65c8efcf3e9abf1d651f4cbd9c14dcdfca0745ff13ff8847bcc79de4e686
5
5
  SHA512:
6
- metadata.gz: 1c15892f0cdcd3ece55399598704c8305f7c1f0b34a651089f505bcc82d81a043289b9d5cb96e05e4716a06773c02bd1df374de997cc4c4e2dad6463d6954949
7
- data.tar.gz: fb1e43340815ee738411b7be1577d8f8f97e3e74e24a2f0311c983bbaa59b790e6947e7ea5fc6ad188b12c37c558200a3443d5b7c03bc949ab974c908d721696
6
+ metadata.gz: 4092ee83c28deb1f1356124a19767539782e12ef9d9e7e734c81661d39fcef30a23e046500be7465db37ce310cd4651bd3cdcdcaf5fa207d7d6a3b9ce9e3c3e2
7
+ data.tar.gz: aeb9066036e98a4fcba8ceb0d61da2d717ab030c6580ddc97457e6e9523d294e1359809ad3a17e25d88b9ff63fd2a702281088cd56bb0429bb34f6bf783d719b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_record_api-rest (0.0.6)
4
+ active_record_api-rest (0.1.7)
5
5
  active_attr
6
6
  active_model_serializers
7
7
  cancancan
@@ -18,15 +18,23 @@ shared_examples 'all::rest::actions' do
18
18
  end
19
19
  end
20
20
  let(:host) { ActiveRecordApi::Rest::RequestUrlGenerator.new(request: request).micro_service_url }
21
+ let(:create_new_attributes) { serializer.new(model).as_json.except(:id) }
22
+ let(:update_new_attributes) { serializer.new(model).as_json }
23
+ let(:update_invalid_attributes) { serializer.new(update_invalid_model).as_json.merge(id: model.id) }
21
24
  describe 'All rest actions' do
22
25
  let(:serializer) { ActiveModelSerializers::SerializableResource }
23
26
  let(:model_klass) { described_class.controller_name.classify.constantize }
24
27
  let(:model) { create factory_symbol }
25
- include_examples 'get::show'
26
- include_examples 'get::index'
27
- include_examples 'put::update'
28
- include_examples 'post::create'
29
- include_examples 'delete::delete'
28
+ it_behaves_like 'get::show'
29
+ it_behaves_like 'get::index'
30
+ it_behaves_like 'put::update' do
31
+ let(:new_attributes) { update_new_attributes }
32
+ let(:invalid_attributes) { update_invalid_attributes }
33
+ end
34
+ it_behaves_like 'post::create' do
35
+ let(:new_attributes) { create_new_attributes }
36
+ end
37
+ it_behaves_like 'delete::delete'
30
38
  end
31
39
  end
32
40
 
@@ -115,7 +123,8 @@ shared_examples 'get::index' do
115
123
  end
116
124
 
117
125
  shared_examples 'put::update' do
118
- let(:payload) { serializer.new(model).as_json }
126
+ let(:new_attributes) { serializer.new(model).as_json }
127
+ let(:invalid_attributes) { serializer.new(update_invalid_model).as_json.merge(id: model.id) }
119
128
  let(:relative_url) { Rails.application.routes.url_helpers.url_for(controller: base_model_klass.to_s.underscore.pluralize, action: 'show', id: model.id, only_path: true) }
120
129
  describe 'PUT update' do
121
130
  context 'when authorized' do
@@ -124,14 +133,14 @@ shared_examples 'put::update' do
124
133
  end
125
134
  context 'valid' do
126
135
  before(:each) do
127
- put :update, params: payload
136
+ put :update, params: new_attributes
128
137
  end
129
138
  it { expect(response.status).to eq 303 }
130
139
  it { expect(response).to redirect_to "#{host}#{relative_url}" }
131
140
  end
132
141
  context 'when invalid param values provided' do
133
142
  before(:each) do
134
- put :update, params: serializer.new(update_invalid_model).as_json.merge(id: model.id)
143
+ put :update, params: invalid_attributes
135
144
  expect(update_invalid_model.valid?).to be false
136
145
  end
137
146
  it { expect(response.status).to eq(422) }
@@ -139,7 +148,7 @@ shared_examples 'put::update' do
139
148
  end
140
149
  context 'when invalid param keys provided' do
141
150
  before(:each) do
142
- put :update, params: payload.merge('foobars' => 'stuff')
151
+ put :update, params: new_attributes.merge('foobars' => 'stuff')
143
152
  end
144
153
  it { expect(response.status).to eq(422) }
145
154
  it { expect(response.body).to be_json_eql({ base: 'Extra parameters are not allow: foobars' }.to_json) }
@@ -148,7 +157,7 @@ shared_examples 'put::update' do
148
157
  context 'when not authorized' do
149
158
  before(:each) do
150
159
  unauthorize_update
151
- get :show, params: payload
160
+ get :show, params: new_attributes
152
161
  end
153
162
  it { expect(response.status).to eq 403 }
154
163
  it { expect(JSON.parse(response.body)['base']).to include 'Access denied on show' }
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ActiveRecordApi
4
4
  module Rest
5
- VERSION = '0.0.7'.freeze
5
+ VERSION = '0.1.8'.freeze
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_api-rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Full Measure Education
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-18 00:00:00.000000000 Z
11
+ date: 2018-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler