flexirest 1.9.16 → 1.9.17

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70788d1c6cfd0e3490c50e6eec78136eb5f6e1031dd6135e943ab7a1a0367db0
4
- data.tar.gz: ed5282f589dd2893fc16db20197d6109382887a6b3a5a936e2f04113c6ba70cf
3
+ metadata.gz: 50fe9393bbb548c2052ca5f971b7c406a9daf742d398fcd0681a917e03dd6247
4
+ data.tar.gz: b1dc3e1b1c97626ed7956f7a7ba31f4bd424d9a1a539645de8bbd456348eb814
5
5
  SHA512:
6
- metadata.gz: 21b69a5820a346cbdfded7e4f0c30e79f5ff10d4f2e272d59f0163070d1e4a729ebaf95d9fe7ccbb70fc15ba952bdee741bcbb994740b40e1882d7c6a0516ba3
7
- data.tar.gz: 57fc2b560629d9cf2521d4f06b3f0dcdca059a686a88f3fe7cc8ca2b4ac912bd1896074243c8a589d5989b4019acc8d0eac709dd95d1f2cd7885ac0523eac702
6
+ metadata.gz: 23ca59d17ad6df1bf15f8dc40bf4fd826132016d82de50a40824ac9d7d98858e92ab621bc8d0681bb61db950ae50853b3017bae86b8ae96ecccc1270a757c018
7
+ data.tar.gz: 60bae684f60df01e8419f97d870bb3412192c6e7c85ecff1abf578d6210bc8d336781e1f1bd1d4f05753b1cccd3a44923049dd43a76f55f5b3ee233807b75fbb
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.17
4
+
5
+ Feature:
6
+
7
+ - Methods can be specified as a symbol for generating fake data (thanks to Niall Duggan for the feature request).
8
+
3
9
  ## 1.9.16
4
10
 
5
11
  Bugfix:
@@ -16,6 +16,17 @@ class Person < Flexirest::Base
16
16
  end
17
17
  ```
18
18
 
19
+ Alternatively, you can specify a symbol as the `fake` parameter, and Flexirest will call that method to get a string JSON as if it was the request body:
20
+
21
+ ```ruby
22
+ class Person < Flexirest::Base
23
+ get :all, '/people', fake: :get_data
24
+
25
+ def get_data
26
+ {result: true}.to_json
27
+ end
28
+ end
29
+ ```
19
30
 
20
31
  -----
21
32
 
@@ -191,9 +191,18 @@ module Flexirest
191
191
  @body = nil
192
192
  prepare_params
193
193
  prepare_url
194
- if fake = @method[:options][:fake]
194
+ fake = @method[:options][:fake]
195
+ if fake.present?
195
196
  if fake.respond_to?(:call)
196
197
  fake = fake.call(self)
198
+ elsif @object.respond_to?(fake)
199
+ fake = @object.send(fake)
200
+ elsif @object.class.respond_to?(fake)
201
+ fake = @object.class.send(fake)
202
+ elsif @object.new.respond_to?(fake)
203
+ fake = @object.new.send(fake)
204
+ elsif @object.class.new.respond_to?(fake)
205
+ fake = @object.class.new.send(fake)
197
206
  end
198
207
  Flexirest::Logger.debug " \033[1;4;32m#{Flexirest.name}\033[0m #{@instrumentation_name} - Faked response found"
199
208
  content_type = @method[:options][:fake_content_type] || "application/json"
@@ -1,3 +1,3 @@
1
1
  module Flexirest
2
- VERSION = "1.9.16"
2
+ VERSION = "1.9.17"
3
3
  end
@@ -55,6 +55,7 @@ describe Flexirest::Request do
55
55
  get :hal, "/hal", fake:"{\"_links\":{\"child\": {\"href\": \"/child/1\"}, \"other\": {\"href\": \"/other/1\"}, \"cars\":[{\"href\": \"/car/1\", \"name\":\"car1\"}, {\"href\": \"/car/2\", \"name\":\"car2\"}, {\"href\": \"/car/not-embed\", \"name\":\"car_not_embed\"} ], \"lazy\": {\"href\": \"/lazy/load\"}, \"invalid\": [{\"href\": \"/invalid/1\"}]}, \"_embedded\":{\"other\":{\"name\":\"Jane\"},\"child\":{\"name\":\"Billy\"}, \"cars\":[{\"_links\": {\"self\": {\"href\": \"/car/1\"} }, \"make\": \"Bugatti\", \"model\": \"Veyron\"}, {\"_links\": {\"self\": {\"href\": \"/car/2\"} }, \"make\": \"Ferrari\", \"model\": \"F458 Italia\"} ], \"invalid\": [{\"present\":true, \"_links\": {} } ] } }", has_many:{other:ExampleOtherClient}
56
56
  get :fake_object, "/fake", fake:"{\"result\":true, \"list\":[1,2,3,{\"test\":true}], \"child\":{\"grandchild\":{\"test\":true}}}"
57
57
  get :fake_proc_object, "/fake", fake:->(request) { "{\"result\":#{request.get_params[:id]}}" }
58
+ get :fake_method, "/fake", fake: :generate_fake_data
58
59
  get :fake_array, "/fake", fake:"[1,2,3,{\"test\":true},null]"
59
60
  get :fake_proc_array, "/fake", fake:->(request) { "[{\"result\":#{request.get_params[:id]}},null]" }
60
61
  get :defaults, "/defaults", defaults:{overwrite:"no", persist:"yes"}
@@ -62,6 +63,10 @@ describe Flexirest::Request do
62
63
  patch :only_changed_1, "/changed1", only_changed: true
63
64
  patch :only_changed_2, "/changed2", only_changed: [:debug1, :debug2]
64
65
  patch :only_changed_3, "/changed3", only_changed: { debug1: false, debug2: true }
66
+
67
+ def generate_fake_data
68
+ "{\"result\":true, \"list\":[1,2,3,{\"test\":true}], \"child\":{\"grandchild\":{\"test\":true}}}"
69
+ end
65
70
  end
66
71
 
67
72
  class ExampleLoadBalancedClient < Flexirest::Base
@@ -576,6 +581,11 @@ describe Flexirest::Request do
576
581
  expect(object.result).to eq(1234)
577
582
  end
578
583
 
584
+ it "should parse JSON object from a fake response generated by method defined as a symbol" do
585
+ object = ExampleClient.fake_method id:1234
586
+ expect(object.result).to eq(true)
587
+ end
588
+
579
589
  it "should parse JSON array and return a nice result iterator for faked responses" do
580
590
  object = ExampleClient.fake_array debug:true
581
591
  expect(object).to be_instance_of(Flexirest::ResultIterator)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flexirest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.16
4
+ version: 1.9.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Jeffries
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-03 00:00:00.000000000 Z
11
+ date: 2020-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler