artirix_data_models 1.0.0.beta3 → 1.0.0.beta4

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
  SHA1:
3
- metadata.gz: ae18a031f2f63e51b88e650af33f00514be973f3
4
- data.tar.gz: 47cacfc9d39fe71f601a24a2b0a98592fff96ed9
3
+ metadata.gz: 6102f754068a06912168285f6750c2cddd81006b
4
+ data.tar.gz: 2e2ead184a6b5a205a2091f90fd7d985e5561f3c
5
5
  SHA512:
6
- metadata.gz: 56fc976f72c5fb3fac636946094f16904795a611ded1b1b4c45bf30b0cf618ea769d7882ccc6ee914b4d8d571eed78c3d9d15e4f522ac8db468dd1986592fec8
7
- data.tar.gz: 6c8b20e6e3c5fcd5efde31dd1069692fda9e8286f3dab37f0170bd25910a051504f81aff5b83d0206a292a9d930fa4848b4d8f911af3986cc87c7bcfd0f981ba
6
+ metadata.gz: a1ee757493b0c96fffdc5aba04f084686a04927be943cf7803872d905f5593e5c439eaefbf9f39a49f0cce62b0641d51f352ffa26c1a4dfa9c08310f26ac522a
7
+ data.tar.gz: 84059d8547429369921935dffb516ddad851a8f71b709ab1818c50ffcc52c341d4fa095b5c081ba2e092a79ca6da24104fd42696d66968162b43362192783ba6
data/README.md CHANGED
@@ -388,6 +388,9 @@ config.x.artirix_data_models.attributes_always_in_partial_mode = [:_timestamp, :
388
388
  ]
389
389
  ```
390
390
 
391
+ ### 1.0.0.beta4
392
+ - add `patch` besides `put`.
393
+
391
394
  ### Breaking Changes!!: version 1.0.0.beta1
392
395
 
393
396
  - rename `DAORegistry` to `ADMRegistry`, and `dao_registry` to `adm_registry`. Passed the rename to all places (`adm_registry_loader`, etc.)
@@ -26,6 +26,7 @@ module ArtirixDataModels
26
26
  :perform_get,
27
27
  :perform_post,
28
28
  :perform_put,
29
+ :perform_patch,
29
30
  :perform_delete,
30
31
 
31
32
  :adm_registry,
@@ -245,6 +245,30 @@ class ArtirixDataModels::BasicModelDAO
245
245
  headers: headers
246
246
  end
247
247
 
248
+ def perform_patch(path,
249
+ fake: nil,
250
+ response_adaptor: nil,
251
+ body: nil,
252
+ fake_response: nil,
253
+ cache_adaptor: nil,
254
+ timeout: nil,
255
+ gateway: nil,
256
+ headers: nil)
257
+
258
+ fake = fake.nil? ? fake? : fake
259
+ g = gateway.presence || preloaded_gateway
260
+ raise_no_gateway unless g.present?
261
+
262
+ g.patch path,
263
+ response_adaptor: response_adaptor,
264
+ body: body,
265
+ timeout: timeout,
266
+ fake: fake,
267
+ fake_response: fake_response,
268
+ cache_adaptor: cache_adaptor,
269
+ headers: headers
270
+ end
271
+
248
272
  def perform_delete(path,
249
273
  fake: nil,
250
274
  response_adaptor: nil,
@@ -273,6 +297,7 @@ class ArtirixDataModels::BasicModelDAO
273
297
  alias_method :_get, :perform_get
274
298
  alias_method :_post, :perform_post
275
299
  alias_method :_put, :perform_put
300
+ alias_method :_patch, :perform_patch
276
301
  alias_method :_delete, :perform_delete
277
302
 
278
303
  end
@@ -31,6 +31,10 @@ class ArtirixDataModels::DataGateway
31
31
  call :put, path, **opts
32
32
  end
33
33
 
34
+ def patch(path, **opts)
35
+ call :patch, path, **opts
36
+ end
37
+
34
38
  def delete(path, **opts)
35
39
  call :delete, path, **opts
36
40
  end
@@ -103,6 +107,10 @@ class ArtirixDataModels::DataGateway
103
107
  perform :put, path: path, **opts
104
108
  end
105
109
 
110
+ def perform_patch(path, **opts)
111
+ perform :patch, path: path, **opts
112
+ end
113
+
106
114
  def perform_delete(path, **opts)
107
115
  perform :delete, path: path, **opts
108
116
  end
@@ -118,6 +118,15 @@ def mock_gateway_put_not_found_response(**params)
118
118
  mock_gateway_not_found_response method: :put, **params
119
119
  end
120
120
 
121
+ # PATCH
122
+ def mock_gateway_patch_response(**params)
123
+ mock_gateway_response method: :patch, **params
124
+ end
125
+
126
+ def mock_gateway_patch_not_found_response(**params)
127
+ mock_gateway_not_found_response method: :patch, **params
128
+ end
129
+
121
130
  # DELETE
122
131
  def mock_gateway_delete_response(**params)
123
132
  mock_gateway_response method: :delete, **params
@@ -1,3 +1,3 @@
1
1
  module ArtirixDataModels
2
- VERSION = '1.0.0.beta3'
2
+ VERSION = '1.0.0.beta4'
3
3
  end
@@ -363,7 +363,13 @@ RSpec.describe ArtirixDataModels::DataGateway, type: :model do
363
363
  connection_stubs.put(path_to_be_bad_json) { |env| [200, {}, 'oh yeah'] }
364
364
  connection_stubs.put(path_to_be_empty) { |env| [200, {}, ''] }
365
365
 
366
- # stub put
366
+ # stub patch
367
+ connection_stubs.patch(path_to_be_not_found) { |env| [404, {}, ''] }
368
+ connection_stubs.patch(path_to_fail) { |env| [500, {}, ''] }
369
+ connection_stubs.patch(path_to_be_bad_json) { |env| [200, {}, 'oh yeah'] }
370
+ connection_stubs.patch(path_to_be_empty) { |env| [200, {}, ''] }
371
+
372
+ # stub delete
367
373
  connection_stubs.delete(path_to_be_not_found) { |env| [404, {}, ''] }
368
374
  connection_stubs.delete(path_to_fail) { |env| [500, {}, ''] }
369
375
  connection_stubs.delete(path_to_be_bad_json) { |env| [200, {}, 'oh yeah'] }
@@ -579,6 +585,81 @@ RSpec.describe ArtirixDataModels::DataGateway, type: :model do
579
585
  end
580
586
  end
581
587
 
588
+ describe '#patch' do
589
+ context 'without body' do
590
+ Given do
591
+ connection_stubs.patch(path, nil) do |env|
592
+ [200, {}, response_string]
593
+ end
594
+ end
595
+
596
+ context 'when failure (500 error)' do
597
+ When(:result) { gateway.patch path_to_fail }
598
+ Then { result == Failure(ArtirixDataModels::DataGateway::GatewayError) }
599
+ end
600
+
601
+ context 'when not found (404 error)' do
602
+ When(:result) { gateway.patch path_to_be_not_found }
603
+ Then { result == Failure(ArtirixDataModels::DataGateway::NotFound) }
604
+ end
605
+
606
+ context 'when receiving bad json' do
607
+ When(:result) { gateway.patch path_to_be_bad_json }
608
+ Then { result == Failure(ArtirixDataModels::DataGateway::ParseError) }
609
+ end
610
+
611
+ context 'when receiving empty response' do
612
+ When(:result) { gateway.patch path_to_be_empty }
613
+ Then { result.nil? }
614
+ end
615
+
616
+ context 'only path given -> return parsed response (JSON -> Hash)' do
617
+ When(:result) { gateway.patch path }
618
+ Then { result == response_hash }
619
+ end
620
+
621
+ context 'with adaptor -> call the adaptor with the parsed response (JSON -> Hash -> AdaptedObject)' do
622
+ Given(:model_class) do
623
+ Class.new do
624
+ attr_reader :data
625
+
626
+ def initialize(data)
627
+ @data = { given: data }
628
+ end
629
+ end
630
+ end
631
+
632
+ Given(:adaptor) { ArtirixDataModels::GatewayResponseAdaptors::ModelAdaptor.single model_class }
633
+
634
+ When(:result) { gateway.get path, response_adaptor: adaptor }
635
+ Then { result.class == model_class }
636
+ And { result.data == { given: response_hash } }
637
+ end
638
+
639
+ end
640
+ context 'with body', focus: true do
641
+ Given(:body) { test_hash }
642
+ Given(:body_json) { body.to_json }
643
+
644
+ Given do
645
+ connection_stubs.patch(path, body_json, { 'Content-Type' => 'application/json' }) do
646
+ response_body = response_string_with_body.call(body_json)
647
+ [200, {}, response_body]
648
+ end
649
+ end
650
+
651
+ context 'STRING body => use body as is' do
652
+ When(:result) { gateway.patch path, body: body_json }
653
+ Then { result == { body: test_hash } }
654
+ end
655
+
656
+ context 'object (or hash) body => use body.to_json' do
657
+ When(:result) { gateway.patch path, body: body }
658
+ Then { result == { body: test_hash } }
659
+ end
660
+ end
661
+ end
662
+
582
663
  describe '#delete' do
583
664
  Given do
584
665
  connection_stubs.delete(path) do |env|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artirix_data_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta3
4
+ version: 1.0.0.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo Turiño
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-31 00:00:00.000000000 Z
11
+ date: 2017-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -312,7 +312,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
312
312
  version: 1.3.1
313
313
  requirements: []
314
314
  rubyforge_project:
315
- rubygems_version: 2.5.2
315
+ rubygems_version: 2.6.13
316
316
  signing_key:
317
317
  specification_version: 4
318
318
  summary: Data Models (read only model) and Data Layer connection lib