lhs 15.3.1 → 15.3.2
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 +4 -4
- data/.rubocop.localch.yml +158 -21
- data/.rubocop.yml +9 -3
- data/lhs.gemspec +10 -9
- data/lib/lhs/complex.rb +1 -1
- data/lib/lhs/concerns/autoload_records.rb +1 -1
- data/lib/lhs/concerns/collection/handle_nested.rb +1 -1
- data/lib/lhs/concerns/inspect.rb +1 -1
- data/lib/lhs/concerns/item/validation.rb +2 -2
- data/lib/lhs/concerns/proxy/accessors.rb +1 -1
- data/lib/lhs/concerns/proxy/problems.rb +1 -1
- data/lib/lhs/concerns/record/chainable.rb +1 -1
- data/lib/lhs/concerns/record/endpoints.rb +2 -2
- data/lib/lhs/concerns/record/model.rb +1 -1
- data/lib/lhs/concerns/record/request.rb +5 -5
- data/lib/lhs/data.rb +5 -4
- data/lib/lhs/endpoint.rb +1 -1
- data/lib/lhs/item.rb +8 -0
- data/lib/lhs/pagination/base.rb +0 -1
- data/lib/lhs/problems/base.rb +1 -1
- data/lib/lhs/record.rb +1 -1
- data/lib/lhs/version.rb +1 -1
- data/spec/autoloading_spec.rb +4 -4
- data/spec/collection/accessors_spec.rb +1 -1
- data/spec/collection/collection_items_spec.rb +1 -1
- data/spec/collection/configurable_spec.rb +1 -1
- data/spec/collection/meta_data_spec.rb +1 -1
- data/spec/collection/to_a_spec.rb +1 -1
- data/spec/collection/to_ary_spec.rb +6 -2
- data/spec/collection/without_object_items_spec.rb +1 -1
- data/spec/complex/reduce_spec.rb +2 -2
- data/spec/concerns/record/request_spec.rb +1 -1
- data/spec/data/collection_spec.rb +1 -1
- data/spec/data/equality_spec.rb +1 -1
- data/spec/data/inspect_spec.rb +1 -1
- data/spec/data/is_item_or_collection_spec.rb +1 -1
- data/spec/data/item_spec.rb +1 -1
- data/spec/data/merge_spec.rb +1 -1
- data/spec/data/parent_spec.rb +1 -1
- data/spec/data/raw_spec.rb +1 -1
- data/spec/data/respond_to_spec.rb +3 -3
- data/spec/data/root_spec.rb +1 -1
- data/spec/data/select_spec.rb +1 -1
- data/spec/data/to_ary_spec.rb +26 -0
- data/spec/data/to_json_spec.rb +1 -1
- data/spec/endpoint/for_url_spec.rb +1 -1
- data/spec/item/access_errors_spec.rb +1 -1
- data/spec/item/accessors_spec.rb +1 -1
- data/spec/item/add_error_spec.rb +1 -1
- data/spec/item/becomes_spec.rb +1 -1
- data/spec/item/blacklisted_keywords_spec.rb +1 -1
- data/spec/item/delegate_spec.rb +1 -1
- data/spec/item/destroy_spec.rb +2 -2
- data/spec/item/dig_spec.rb +1 -1
- data/spec/item/error_codes_spec.rb +1 -1
- data/spec/item/errors_spec.rb +22 -22
- data/spec/item/fetch_spec.rb +1 -1
- data/spec/item/getter_spec.rb +1 -1
- data/spec/item/internal_data_structure_spec.rb +1 -1
- data/spec/item/map_spec.rb +1 -1
- data/spec/item/partial_update_spec.rb +3 -3
- data/spec/item/save_spec.rb +2 -2
- data/spec/item/setter_spec.rb +1 -1
- data/spec/item/translate_errors_spec.rb +1 -1
- data/spec/item/update_spec.rb +1 -1
- data/spec/item/validation_spec.rb +4 -4
- data/spec/item/warning_codes_spec.rb +1 -1
- data/spec/item/warnings_spec.rb +1 -3
- data/spec/pagination/pages_left_spec.rb +1 -1
- data/spec/pagination/parameters_spec.rb +1 -1
- data/spec/proxy/create_sub_resource_spec.rb +5 -5
- data/spec/proxy/load_spec.rb +8 -10
- data/spec/proxy/record_identification_spec.rb +1 -1
- data/spec/record/all_spec.rb +3 -3
- data/spec/record/build_spec.rb +1 -1
- data/spec/record/cast_nested_data_spec.rb +1 -1
- data/spec/record/chain_error_handling_spec.rb +1 -1
- data/spec/record/create_spec.rb +4 -4
- data/spec/record/creation_failed_spec.rb +2 -2
- data/spec/record/definitions_spec.rb +1 -1
- data/spec/record/destroy_spec.rb +1 -1
- data/spec/record/dig_configuration_spec.rb +1 -1
- data/spec/record/endpoint_inheritance_spec.rb +3 -3
- data/spec/record/endpoint_options_spec.rb +2 -2
- data/spec/record/endpoints_spec.rb +7 -7
- data/spec/record/equality_spec.rb +1 -1
- data/spec/record/expanded_spec.rb +1 -1
- data/spec/record/fetch_spec.rb +1 -1
- data/spec/record/find_by_chains_spec.rb +1 -1
- data/spec/record/find_by_spec.rb +2 -2
- data/spec/record/find_each_spec.rb +1 -1
- data/spec/record/find_in_batches_spec.rb +2 -2
- data/spec/record/find_in_parallel_spec.rb +2 -2
- data/spec/record/find_spec.rb +3 -3
- data/spec/record/first_spec.rb +2 -2
- data/spec/record/handle_includes_errors_spec.rb +1 -1
- data/spec/record/has_many_spec.rb +3 -3
- data/spec/record/ignore_errors_spec.rb +5 -14
- data/spec/record/immutable_chains_spec.rb +1 -1
- data/spec/record/includes_all_spec.rb +6 -6
- data/spec/record/includes_spec.rb +13 -13
- data/spec/record/includes_warning_spec.rb +1 -1
- data/spec/record/item_key_spec.rb +1 -1
- data/spec/record/items_created_key_configuration_spec.rb +1 -1
- data/spec/record/mapping_spec.rb +1 -1
- data/spec/record/model_name_spec.rb +1 -1
- data/spec/record/new_spec.rb +5 -5
- data/spec/record/options_spec.rb +5 -5
- data/spec/record/paginatable_collection_spec.rb +5 -6
- data/spec/record/pagination_chain_spec.rb +3 -3
- data/spec/record/pagination_links_spec.rb +1 -1
- data/spec/record/pagination_spec.rb +1 -1
- data/spec/record/persisted_spec.rb +2 -1
- data/spec/record/references_spec.rb +1 -1
- data/spec/record/reload_by_id_spec.rb +1 -1
- data/spec/record/reload_spec.rb +2 -2
- data/spec/record/request_spec.rb +3 -3
- data/spec/record/scope_chains_spec.rb +1 -1
- data/spec/record/to_hash_spec.rb +1 -1
- data/spec/record/to_json_spec.rb +1 -1
- data/spec/record/where_chains_spec.rb +3 -3
- data/spec/record/where_spec.rb +1 -1
- data/spec/record/where_values_hash_spec.rb +1 -1
- data/spec/request_cycle_cache/main_spec.rb +2 -1
- data/spec/require_lhs_spec.rb +1 -1
- data/spec/support/cleanup.rb +1 -1
- data/spec/support/request_cycle_cache.rb +1 -1
- data/spec/views/form_for_spec.rb +1 -1
- metadata +47 -31
data/spec/item/delegate_spec.rb
CHANGED
data/spec/item/destroy_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
describe LHS::Item do
|
4
|
-
before
|
4
|
+
before do
|
5
5
|
LHC.config.placeholder('datastore', datastore)
|
6
6
|
class Record < LHS::Record
|
7
7
|
endpoint '{+datastore}/v2/{campaign_id}/feedbacks'
|
@@ -40,7 +40,7 @@ describe LHS::Item do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
context 'includes and empty response' do
|
43
|
-
before
|
43
|
+
before do
|
44
44
|
class AnotherRecord < LHS::Record
|
45
45
|
endpoint '{+datastore}/v2/:campaign_id/restaurants'
|
46
46
|
end
|
data/spec/item/dig_spec.rb
CHANGED
data/spec/item/errors_spec.rb
CHANGED
@@ -50,7 +50,7 @@ describe LHS::Item do
|
|
50
50
|
'<html></html>'
|
51
51
|
end
|
52
52
|
|
53
|
-
before
|
53
|
+
before do
|
54
54
|
I18n.reload!
|
55
55
|
I18n.backend.store_translations(:en, {}) if defined? translations
|
56
56
|
LHC.config.placeholder(:datastore, datastore)
|
@@ -68,7 +68,7 @@ describe LHS::Item do
|
|
68
68
|
.to_return(status: 400, body: error_format_fields.to_json)
|
69
69
|
result = record.save
|
70
70
|
expect(result).to eq false
|
71
|
-
expect(record.errors).to
|
71
|
+
expect(record.errors).to be_present
|
72
72
|
expect(record.errors.any?).to eq true
|
73
73
|
expect(record.name).to eq 'Steve'
|
74
74
|
expect(record.errors.include?(:ratings)).to eq true
|
@@ -81,8 +81,8 @@ describe LHS::Item do
|
|
81
81
|
stub_request(:post, "#{datastore}/feedbacks")
|
82
82
|
.to_return(status: 400, body: error_format_fields.to_json)
|
83
83
|
record.save
|
84
|
-
expect(record.errors.messages[:ratings]).to
|
85
|
-
expect(record.errors.messages['ratings']).to
|
84
|
+
expect(record.errors.messages[:ratings]).to be_present
|
85
|
+
expect(record.errors.messages['ratings']).to be_present
|
86
86
|
end
|
87
87
|
|
88
88
|
it 'parses field errors correctly when creation failed' do
|
@@ -90,7 +90,7 @@ describe LHS::Item do
|
|
90
90
|
.to_return(status: 400, body: error_format_field_errors.to_json)
|
91
91
|
result = record.save
|
92
92
|
expect(result).to eq false
|
93
|
-
expect(record.errors).to
|
93
|
+
expect(record.errors).to be_present
|
94
94
|
expect(record.errors.any?).to eq true
|
95
95
|
expect(record.errors.include?(:gender)).to eq true
|
96
96
|
expect(record.errors.include?(:"contract.entry_id")).to eq true
|
@@ -102,7 +102,7 @@ describe LHS::Item do
|
|
102
102
|
stub_request(:post, "#{datastore}/feedbacks")
|
103
103
|
.to_return(status: 400, body: error_format_fields.to_json)
|
104
104
|
expect { record.save! }.to raise_error(LHC::BadRequest)
|
105
|
-
expect(record.errors).to
|
105
|
+
expect(record.errors).to be_present
|
106
106
|
expect(record.errors.any?).to eq true
|
107
107
|
expect(record.name).to eq 'Steve'
|
108
108
|
expect(record.errors.include?(:ratings)).to eq true
|
@@ -118,12 +118,12 @@ describe LHS::Item do
|
|
118
118
|
.to_return(status: 400, body: error_format_field_errors.to_json)
|
119
119
|
record = Record.build
|
120
120
|
record.save
|
121
|
-
expect(record.errors.raw).to
|
121
|
+
expect(record.errors.raw).to be_present
|
122
122
|
expect(record.errors.any?).to eq true
|
123
123
|
json = JSON.parse(record.errors.raw)
|
124
|
-
expect(json['status']).to
|
125
|
-
expect(json['message']).to
|
126
|
-
expect(json['field_errors']).to
|
124
|
+
expect(json['status']).to be_present
|
125
|
+
expect(json['message']).to be_present
|
126
|
+
expect(json['field_errors']).to be_present
|
127
127
|
end
|
128
128
|
end
|
129
129
|
|
@@ -135,7 +135,7 @@ describe LHS::Item do
|
|
135
135
|
record.name = 'Steve'
|
136
136
|
result = record.save
|
137
137
|
expect(result).to eq false
|
138
|
-
expect(record.errors).to
|
138
|
+
expect(record.errors).to be_present
|
139
139
|
expect(record.errors.any?).to eq true
|
140
140
|
expect(record.errors['error']).to eq ['missing_token']
|
141
141
|
expect(record.errors['error_description']).to eq ['Bearer token is missing']
|
@@ -149,7 +149,7 @@ describe LHS::Item do
|
|
149
149
|
record.name = 'Steve'
|
150
150
|
result = record.save
|
151
151
|
expect(result).to eq false
|
152
|
-
expect(record.errors).to
|
152
|
+
expect(record.errors).to be_present
|
153
153
|
expect(record.errors.any?).to eq true
|
154
154
|
expect(record.errors['body']).to eq ['parse error']
|
155
155
|
end
|
@@ -162,7 +162,7 @@ describe LHS::Item do
|
|
162
162
|
record.name = 'Steve'
|
163
163
|
result = record.save
|
164
164
|
expect(result).to eq false
|
165
|
-
expect(record.errors).to
|
165
|
+
expect(record.errors).to be_present
|
166
166
|
expect(record.errors.any?).to eq true
|
167
167
|
expect(record.errors['body']).to eq ['parse error']
|
168
168
|
end
|
@@ -171,7 +171,7 @@ describe LHS::Item do
|
|
171
171
|
describe '#clear' do
|
172
172
|
let(:record) { Record.build(name: 'Steve') }
|
173
173
|
|
174
|
-
before
|
174
|
+
before do
|
175
175
|
stub_request(:post, "#{datastore}/feedbacks")
|
176
176
|
.to_return(status: 400, body: error_format_fields.to_json)
|
177
177
|
end
|
@@ -219,7 +219,7 @@ describe LHS::Item do
|
|
219
219
|
|
220
220
|
let(:errrors) { record.errors }
|
221
221
|
|
222
|
-
before
|
222
|
+
before do
|
223
223
|
stub_request(:post, "#{datastore}/feedbacks")
|
224
224
|
.to_return(status: 400, body: body_with_errors.to_json)
|
225
225
|
end
|
@@ -228,14 +228,14 @@ describe LHS::Item do
|
|
228
228
|
record.save
|
229
229
|
expect(record.errors['address.street.name']).to include 'INCOMPLETE_PROPERTY_VALUE'
|
230
230
|
expect(record.errors['reviews.0.name']).to include 'UNSUPPORTED_PROPERTY_VALUE'
|
231
|
-
expect(record.address.errors).to
|
232
|
-
expect(record.address.errors['street.name']).to
|
233
|
-
expect(record.address.street.errors).to
|
231
|
+
expect(record.address.errors).to be_present
|
232
|
+
expect(record.address.errors['street.name']).to be_present
|
233
|
+
expect(record.address.street.errors).to be_present
|
234
234
|
expect(record.address.street.errors[:name]).to include 'INCOMPLETE_PROPERTY_VALUE'
|
235
|
-
expect(record.reviews.errors).to
|
236
|
-
expect(record.reviews.first.errors).to
|
235
|
+
expect(record.reviews.errors).to be_present
|
236
|
+
expect(record.reviews.first.errors).to be_present
|
237
237
|
expect(record.reviews.first.errors[:name]).to include 'UNSUPPORTED_PROPERTY_VALUE'
|
238
|
-
expect(record.reviews.last.errors).to
|
238
|
+
expect(record.reviews.last.errors).to be_present
|
239
239
|
expect(record.reviews.last.errors[:name]).to include 'UNSUPPORTED_PROPERTY_VALUE'
|
240
240
|
end
|
241
241
|
|
@@ -253,7 +253,7 @@ describe LHS::Item do
|
|
253
253
|
end
|
254
254
|
|
255
255
|
context 'with general error fallback message configured' do
|
256
|
-
before
|
256
|
+
before do
|
257
257
|
I18n.reload!
|
258
258
|
I18n.backend.store_translations(:en, YAML.safe_load(translation)) if translation.present?
|
259
259
|
end
|
data/spec/item/fetch_spec.rb
CHANGED
data/spec/item/getter_spec.rb
CHANGED
data/spec/item/map_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
describe LHS::Item do
|
4
|
-
before
|
4
|
+
before do
|
5
5
|
class Record < LHS::Record
|
6
6
|
endpoint '{+datastore}/v2/{campaign_id}/feedbacks'
|
7
7
|
endpoint '{+datastore}/v2/feedbacks'
|
@@ -62,7 +62,7 @@ describe LHS::Item do
|
|
62
62
|
|
63
63
|
context 'records without hrefs and nested items' do
|
64
64
|
|
65
|
-
before
|
65
|
+
before do
|
66
66
|
class Location < LHS::Record
|
67
67
|
endpoint 'http://uberall/locations'
|
68
68
|
endpoint 'http://uberall/locations/{id}'
|
@@ -80,7 +80,7 @@ describe LHS::Item do
|
|
80
80
|
|
81
81
|
context 'records with nested items' do
|
82
82
|
|
83
|
-
before
|
83
|
+
before do
|
84
84
|
class Location < LHS::Record
|
85
85
|
endpoint 'http://uberall/locations'
|
86
86
|
endpoint 'http://uberall/locations/{id}'
|
data/spec/item/save_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
describe LHS::Item do
|
4
|
-
before
|
4
|
+
before do
|
5
5
|
class Record < LHS::Record
|
6
6
|
endpoint '{+datastore}/v2/{campaign_id}/feedbacks'
|
7
7
|
endpoint '{+datastore}/v2/feedbacks'
|
@@ -23,7 +23,7 @@ describe LHS::Item do
|
|
23
23
|
context 'endpoint options' do
|
24
24
|
let(:headers) { { 'X-Header' => 'VALUE' } }
|
25
25
|
|
26
|
-
before
|
26
|
+
before do
|
27
27
|
class RecordWithOptions < LHS::Record
|
28
28
|
endpoint 'http://datastore/records', headers: { 'X-Header' => 'VALUE' }
|
29
29
|
end
|
data/spec/item/setter_spec.rb
CHANGED
data/spec/item/update_spec.rb
CHANGED
@@ -72,7 +72,7 @@ describe LHS::Item do
|
|
72
72
|
.to_return(status: 400, body: validation_errors.to_json)
|
73
73
|
end
|
74
74
|
|
75
|
-
before
|
75
|
+
before do
|
76
76
|
class User < LHS::Record
|
77
77
|
endpoint 'http://datastore/v2/users', validates: { params: { persist: false } }
|
78
78
|
end
|
@@ -84,7 +84,7 @@ describe LHS::Item do
|
|
84
84
|
user.email = 'not a valid email'
|
85
85
|
failing_validation
|
86
86
|
expect(user.valid?).to eq false
|
87
|
-
expect(user.errors[:email]).to
|
87
|
+
expect(user.errors[:email]).to be_present
|
88
88
|
end
|
89
89
|
|
90
90
|
it 'gets reset when revalidation' do
|
@@ -98,7 +98,7 @@ describe LHS::Item do
|
|
98
98
|
end
|
99
99
|
|
100
100
|
context 'endpoint does not support validations' do
|
101
|
-
before
|
101
|
+
before do
|
102
102
|
class Favorite < LHS::Record
|
103
103
|
endpoint '{+datastore}/v2/favorites'
|
104
104
|
end
|
@@ -112,7 +112,7 @@ describe LHS::Item do
|
|
112
112
|
end
|
113
113
|
|
114
114
|
context 'generate validation url from locally passed params' do
|
115
|
-
before
|
115
|
+
before do
|
116
116
|
class User < LHS::Record
|
117
117
|
endpoint 'http://datastore/v2/users/{user_id}', validates: { params: { persist: false } }
|
118
118
|
end
|
data/spec/item/warnings_spec.rb
CHANGED
@@ -2,13 +2,11 @@ require 'rails_helper'
|
|
2
2
|
|
3
3
|
describe LHS::Item do
|
4
4
|
|
5
|
-
before
|
5
|
+
before do
|
6
6
|
class Presence < LHS::Record
|
7
7
|
endpoint 'http://opm/presence'
|
8
8
|
end
|
9
|
-
end
|
10
9
|
|
11
|
-
before(:each) do
|
12
10
|
I18n.reload!
|
13
11
|
I18n.backend.store_translations(:en, YAML.safe_load(%q{
|
14
12
|
lhs:
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
describe LHS::Item do
|
4
|
-
before
|
4
|
+
before do
|
5
5
|
class Feedback < LHS::Record
|
6
6
|
endpoint 'http://datastore/v2/feedbacks/{id}'
|
7
7
|
end
|
@@ -37,7 +37,7 @@ describe LHS::Item do
|
|
37
37
|
end
|
38
38
|
|
39
39
|
context 'without the object' do
|
40
|
-
before
|
40
|
+
before do
|
41
41
|
stub_request(:get, "http://datastore/v2/feedbacks/1")
|
42
42
|
.to_return(body: {
|
43
43
|
review: {
|
@@ -56,7 +56,7 @@ describe LHS::Item do
|
|
56
56
|
end
|
57
57
|
|
58
58
|
context 'with existing item' do
|
59
|
-
before
|
59
|
+
before do
|
60
60
|
stub_request(:get, "http://datastore/v2/feedbacks/1")
|
61
61
|
.to_return(body: {
|
62
62
|
review: {
|
@@ -92,7 +92,7 @@ describe LHS::Item do
|
|
92
92
|
end
|
93
93
|
|
94
94
|
context 'when expanded' do
|
95
|
-
before
|
95
|
+
before do
|
96
96
|
stub_request(:get, "http://datastore/v2/feedbacks/1")
|
97
97
|
.to_return(body: {
|
98
98
|
reviews: {
|
@@ -114,7 +114,7 @@ describe LHS::Item do
|
|
114
114
|
end
|
115
115
|
|
116
116
|
context 'when not expanded' do
|
117
|
-
before
|
117
|
+
before do
|
118
118
|
stub_request(:get, "http://datastore/v2/feedbacks/1")
|
119
119
|
.to_return(body: {
|
120
120
|
reviews: {
|
data/spec/proxy/load_spec.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
describe LHS::Proxy do
|
4
|
-
before
|
4
|
+
before do
|
5
5
|
class Record < LHS::Record
|
6
6
|
endpoint '{+datastore}/v2/feedbacks'
|
7
7
|
end
|
8
|
+
|
9
|
+
stub_request(:get, 'http://local.ch/v2/content-ads/51dfc5690cf271c375c5a12d')
|
10
|
+
.to_return(status: 200, body: load_json(:localina_content_ad))
|
8
11
|
end
|
9
12
|
|
10
13
|
let(:json) do
|
@@ -23,19 +26,14 @@ describe LHS::Proxy do
|
|
23
26
|
item.campaign
|
24
27
|
end
|
25
28
|
|
26
|
-
before(:each) do
|
27
|
-
stub_request(:get, 'http://local.ch/v2/content-ads/51dfc5690cf271c375c5a12d')
|
28
|
-
.to_return(status: 200, body: load_json(:localina_content_ad))
|
29
|
-
end
|
30
|
-
|
31
29
|
context 'load' do
|
32
30
|
it 'is loading data remotely when not present yet' do
|
33
|
-
expect(link.load!.id).to
|
34
|
-
expect(link.id).to
|
31
|
+
expect(link.load!.id).to be_present
|
32
|
+
expect(link.id).to be_present
|
35
33
|
end
|
36
34
|
|
37
35
|
it 'can be reloaded' do
|
38
|
-
expect(link.load!.id).to
|
36
|
+
expect(link.load!.id).to be_present
|
39
37
|
stub_request(:get, 'http://local.ch/v2/content-ads/51dfc5690cf271c375c5a12d')
|
40
38
|
.to_return(status: 404)
|
41
39
|
expect(-> { link.reload!.id })
|
@@ -44,7 +42,7 @@ describe LHS::Proxy do
|
|
44
42
|
end
|
45
43
|
|
46
44
|
context 'endpoint options' do
|
47
|
-
before
|
45
|
+
before do
|
48
46
|
class AnotherRecord < LHS::Record
|
49
47
|
endpoint '{+datastore}/v2/feedbacks', params: { color: :blue }
|
50
48
|
end
|