forest_liana 7.0.0.beta.3 → 7.0.0.beta.4
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0bf8bedca443e88f415a14995d430f5ba021cfe846d8471588680c5f35e619eb
|
4
|
+
data.tar.gz: f68ffb4494911b3b674965b3370988c4505be91673f7d67e194482b0975226e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97aeec5fc463e97cc3b8475c0f09228ea131a322d458104f2cf28306d390b904fd433a78e2a53b7baf34aaf05c6f66d7783e15a36b1f464790ab78bc5bd60ea6
|
7
|
+
data.tar.gz: 9339a84947baea79f91ebb48716760eee7f8e2acee6fc473b881904001c7f3f6bd6f1a1de6603df63eeba15967fcf6d982a60a7f42c049f007b958d60ff9732e
|
@@ -1,8 +1,13 @@
|
|
1
1
|
module ForestLiana
|
2
2
|
class ActionsController < ForestLiana::BaseController
|
3
3
|
|
4
|
-
def
|
5
|
-
|
4
|
+
def get_smart_action_hook_request
|
5
|
+
begin
|
6
|
+
params[:data][:attributes]
|
7
|
+
rescue => error
|
8
|
+
FOREST_LOGGER.error "Smart Action hook request error: #{error}"
|
9
|
+
{}
|
10
|
+
end
|
6
11
|
end
|
7
12
|
|
8
13
|
def get_collection(collection_name)
|
@@ -18,13 +23,6 @@ module ForestLiana
|
|
18
23
|
nil
|
19
24
|
end
|
20
25
|
end
|
21
|
-
|
22
|
-
def get_record
|
23
|
-
model = ForestLiana::SchemaUtils.find_model_from_collection_name(params[:collectionName])
|
24
|
-
redord_getter = ForestLiana::ResourceGetter.new(model, {:id => params[:recordIds][0]})
|
25
|
-
redord_getter.perform
|
26
|
-
redord_getter.record
|
27
|
-
end
|
28
26
|
|
29
27
|
def get_smart_action_load_ctx(fields)
|
30
28
|
fields = fields.map do |field|
|
@@ -32,7 +30,7 @@ module ForestLiana
|
|
32
30
|
field[:value] = nil unless field[:value]
|
33
31
|
field
|
34
32
|
end
|
35
|
-
{:
|
33
|
+
{:fields => fields, :params => params}
|
36
34
|
end
|
37
35
|
|
38
36
|
def get_smart_action_change_ctx(fields, field_changed)
|
@@ -42,7 +40,7 @@ module ForestLiana
|
|
42
40
|
ForestLiana::WidgetsHelper.set_field_widget(field)
|
43
41
|
field
|
44
42
|
end
|
45
|
-
{:
|
43
|
+
{:field_changed => found_field_changed, :fields => fields, :params => params}
|
46
44
|
end
|
47
45
|
|
48
46
|
def handle_result(result, action)
|
@@ -87,7 +85,9 @@ module ForestLiana
|
|
87
85
|
end
|
88
86
|
|
89
87
|
def load
|
90
|
-
|
88
|
+
load_request = get_smart_action_hook_request
|
89
|
+
|
90
|
+
action = get_action(load_request[:collection_name])
|
91
91
|
|
92
92
|
if !action
|
93
93
|
render status: 500, json: {error: 'Error in smart action load hook: cannot retrieve action from collection'}
|
@@ -103,18 +103,20 @@ module ForestLiana
|
|
103
103
|
end
|
104
104
|
|
105
105
|
def change
|
106
|
-
|
106
|
+
change_request = get_smart_action_hook_request
|
107
|
+
|
108
|
+
action = get_action(change_request[:collection_name])
|
107
109
|
|
108
110
|
if !action
|
109
111
|
return render status: 500, json: {error: 'Error in smart action change hook: cannot retrieve action from collection'}
|
110
|
-
elsif
|
112
|
+
elsif change_request[:fields].nil?
|
111
113
|
return render status: 500, json: {error: 'Error in smart action change hook: fields params is mandatory'}
|
112
|
-
elsif !
|
114
|
+
elsif !change_request[:fields].is_a?(Array)
|
113
115
|
return render status: 500, json: {error: 'Error in smart action change hook: fields params must be an array'}
|
114
116
|
end
|
115
117
|
|
116
118
|
# Get the smart action hook change context
|
117
|
-
context = get_smart_action_change_ctx(
|
119
|
+
context = get_smart_action_change_ctx(change_request[:fields], change_request[:changed_field])
|
118
120
|
|
119
121
|
field_changed_hook = context[:field_changed][:hook]
|
120
122
|
|
@@ -86,15 +86,6 @@ module ForestLiana
|
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
|
-
def get_smart_action_context
|
90
|
-
begin
|
91
|
-
params[:data][:attributes].values[0].to_hash.symbolize_keys
|
92
|
-
rescue => error
|
93
|
-
FOREST_LOGGER.error "Smart Action context retrieval error: #{error}"
|
94
|
-
{}
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
89
|
def internal_server_error
|
99
90
|
head :internal_server_error
|
100
91
|
end
|
data/config/routes.rb
CHANGED
@@ -57,7 +57,6 @@ ForestLiana::Engine.routes.draw do
|
|
57
57
|
delete ':collection', to: router
|
58
58
|
|
59
59
|
# Smart Actions forms value
|
60
|
-
post 'actions/:action_name/values' => 'actions#values'
|
61
60
|
post 'actions/:action_name/hooks/load' => 'actions#load'
|
62
61
|
post 'actions/:action_name/hooks/change' => 'actions#change'
|
63
62
|
end
|
data/lib/forest_liana/version.rb
CHANGED
@@ -10,15 +10,7 @@ describe 'Requesting Actions routes', :type => :request do
|
|
10
10
|
after(:each) do
|
11
11
|
Island.destroy_all
|
12
12
|
end
|
13
|
-
|
14
|
-
describe 'call /values' do
|
15
|
-
it 'should respond 200' do
|
16
|
-
post '/forest/actions/foo/values', {}
|
17
|
-
expect(response.status).to eq(200)
|
18
|
-
expect(response.body).to be {}
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
13
|
+
|
22
14
|
describe 'hooks' do
|
23
15
|
foo = {
|
24
16
|
field: 'foo',
|
@@ -127,7 +119,11 @@ describe 'Requesting Actions routes', :type => :request do
|
|
127
119
|
island.actions = [action, fail_action, cheat_action, enums_action, multiple_enums_action]
|
128
120
|
|
129
121
|
describe 'call /load' do
|
130
|
-
params = {
|
122
|
+
params = {
|
123
|
+
data: {
|
124
|
+
attributes: { ids: [1], collection_name: 'Island' }
|
125
|
+
}
|
126
|
+
}
|
131
127
|
|
132
128
|
it 'should respond 200' do
|
133
129
|
post '/forest/actions/my_action/hooks/load', params: JSON.dump(params), headers: { 'CONTENT_TYPE' => 'application/json' }
|
@@ -156,7 +152,16 @@ describe 'Requesting Actions routes', :type => :request do
|
|
156
152
|
|
157
153
|
describe 'call /change' do
|
158
154
|
updated_foo = foo.clone.merge({:previousValue => nil, :value => 'bar'})
|
159
|
-
params = {
|
155
|
+
params = {
|
156
|
+
data: {
|
157
|
+
attributes: {
|
158
|
+
ids: [1],
|
159
|
+
fields: [updated_foo],
|
160
|
+
collection_name: 'Island',
|
161
|
+
changed_field: 'foo'
|
162
|
+
}
|
163
|
+
}
|
164
|
+
}
|
160
165
|
|
161
166
|
it 'should respond 200' do
|
162
167
|
post '/forest/actions/my_action/hooks/change', params: JSON.dump(params), headers: { 'CONTENT_TYPE' => 'application/json' }
|
@@ -168,7 +173,7 @@ describe 'Requesting Actions routes', :type => :request do
|
|
168
173
|
end
|
169
174
|
|
170
175
|
it 'should respond 500 with bad params' do
|
171
|
-
post '/forest/actions/my_action/hooks/change', params: JSON.dump({
|
176
|
+
post '/forest/actions/my_action/hooks/change', params: JSON.dump({ data: { attributes: { collection_name: 'Island' }}}), headers: { 'CONTENT_TYPE' => 'application/json' }
|
172
177
|
expect(response.status).to eq(500)
|
173
178
|
expect(JSON.parse(response.body)).to eq({'error' => 'Error in smart action change hook: fields params is mandatory'})
|
174
179
|
end
|
@@ -181,7 +186,16 @@ describe 'Requesting Actions routes', :type => :request do
|
|
181
186
|
|
182
187
|
it 'should reset value when enums has changed' do
|
183
188
|
updated_enum = enum.clone.merge({:previousValue => nil, :value => 'a'}) # set value to a
|
184
|
-
p = {
|
189
|
+
p = {
|
190
|
+
data: {
|
191
|
+
attributes: {
|
192
|
+
ids: [1],
|
193
|
+
fields: [updated_foo, updated_enum],
|
194
|
+
collection_name: 'Island',
|
195
|
+
changed_field: 'foo'
|
196
|
+
}
|
197
|
+
}
|
198
|
+
}
|
185
199
|
post '/forest/actions/enums_action/hooks/change', params: JSON.dump(p), headers: { 'CONTENT_TYPE' => 'application/json' }
|
186
200
|
expect(response.status).to eq(200)
|
187
201
|
|
@@ -195,7 +209,16 @@ describe 'Requesting Actions routes', :type => :request do
|
|
195
209
|
|
196
210
|
it 'should not reset value when every enum values are in the enums definition' do
|
197
211
|
updated_multiple_enum = multiple_enum.clone.merge({:previousValue => nil, :value => %w[c]})
|
198
|
-
p = {
|
212
|
+
p = {
|
213
|
+
data: {
|
214
|
+
attributes: {
|
215
|
+
ids: [1],
|
216
|
+
fields: [foo, updated_multiple_enum],
|
217
|
+
collection_name: 'Island',
|
218
|
+
changed_field: 'foo'
|
219
|
+
}
|
220
|
+
}
|
221
|
+
}
|
199
222
|
post '/forest/actions/multiple_enums_action/hooks/change', params: JSON.dump(p), headers: { 'CONTENT_TYPE' => 'application/json' }
|
200
223
|
expect(response.status).to eq(200)
|
201
224
|
|
@@ -209,7 +232,17 @@ describe 'Requesting Actions routes', :type => :request do
|
|
209
232
|
|
210
233
|
it 'should reset value when one of the enum values is not in the enums definition' do
|
211
234
|
wrongly_updated_multiple_enum = multiple_enum.clone.merge({:previousValue => nil, :value => %w[a b]})
|
212
|
-
p = {
|
235
|
+
p = {
|
236
|
+
data: {
|
237
|
+
attributes: {
|
238
|
+
ids: [1],
|
239
|
+
fields: [foo, wrongly_updated_multiple_enum],
|
240
|
+
collection_name: 'Island',
|
241
|
+
changed_field: 'foo'
|
242
|
+
}
|
243
|
+
}
|
244
|
+
}
|
245
|
+
|
213
246
|
post '/forest/actions/multiple_enums_action/hooks/change', params: JSON.dump(p), headers: { 'CONTENT_TYPE' => 'application/json' }
|
214
247
|
expect(response.status).to eq(200)
|
215
248
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: forest_liana
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.0.0.beta.
|
4
|
+
version: 7.0.0.beta.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sandro Munda
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-07-
|
11
|
+
date: 2021-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|