forest_liana 7.0.0.beta.5 → 7.0.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/app/controllers/forest_liana/actions_controller.rb +3 -1
- data/app/models/forest_liana/model/action.rb +6 -0
- data/app/services/forest_liana/filters_parser.rb +22 -10
- data/lib/forest_liana/version.rb +1 -1
- data/spec/requests/actions_controller_spec.rb +13 -2
- data/spec/services/forest_liana/filters_parser_spec.rb +27 -1
- data/spec/services/forest_liana/resource_updater_spec.rb +1 -1
- metadata +133 -133
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b09187df0403cde37e732b39f06e89a4df087f1d91fe7e13a80aafd3490b33e7
|
4
|
+
data.tar.gz: d81c4f22e697da9926c8e35736ce76eb60eca5f5b7d5579cb9140f680dfd15d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40e99d1d96cd7142fb8ae68a4aab488eb9fd3ac67a36e2e78213a3e5b63c9e1f516840b0648255e4f2efe3c983ba0e4146bdac8081e5e8fba5a2c98201be62c8
|
7
|
+
data.tar.gz: f3a7a15486d28e64d62157fdf2fbef4779ab67b78423e3b75f0dcebf31e8549c3a8ddb0bed3234709ee5776416dced7e9e39ee755527775e4b5cea09265543b7
|
@@ -78,7 +78,9 @@ module ForestLiana
|
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
|
-
|
81
|
+
# Response of load hook is not JSONAPI serialized
|
82
|
+
# so we need to transform snake_case properties back to camelCase
|
83
|
+
updated_field.transform_keys { |key| key.to_s.camelize(:lower) }
|
82
84
|
end
|
83
85
|
|
84
86
|
render serializer: nil, json: { fields: fields }, status: :ok
|
@@ -44,6 +44,12 @@ class ForestLiana::Model::Action
|
|
44
44
|
field.delete(:isRequired)
|
45
45
|
end
|
46
46
|
|
47
|
+
if field.key?(:isReadOnly)
|
48
|
+
FOREST_LOGGER.warn "DEPRECATION WARNING: isReadOnly on field \"#{field[:field]}\" is deprecated. Please use is_read_only."
|
49
|
+
field[:is_read_only] = !!field[:isReadOnly]
|
50
|
+
field.delete(:isReadOnly)
|
51
|
+
end
|
52
|
+
|
47
53
|
field[:type] = "String" unless field.key?(:type)
|
48
54
|
field[:default_value] = nil unless field.key?(:default_value)
|
49
55
|
field[:enums] = nil unless field.key?(:enums)
|
@@ -109,16 +109,7 @@ module ForestLiana
|
|
109
109
|
parsed_value = parse_value(operator, value)
|
110
110
|
field_and_operator = "#{parsed_field} #{parsed_operator}"
|
111
111
|
|
112
|
-
|
113
|
-
# and have no side effects on other requests
|
114
|
-
if Rails::VERSION::MAJOR < 5
|
115
|
-
"#{field_and_operator} (#{ActiveRecord::Base.sanitize(parsed_value)})"
|
116
|
-
# NOTICE: sanitize method as been removed in Rails 5.1 and sanitize_sql introduced in Rails 5.2.
|
117
|
-
elsif Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR == 1
|
118
|
-
"#{field_and_operator} (#{ActiveRecord::Base.connection.quote(parsed_value)})"
|
119
|
-
else
|
120
|
-
ActiveRecord::Base.sanitize_sql(["#{field_and_operator} (?)", parsed_value])
|
121
|
-
end
|
112
|
+
sanitize_condition(field_and_operator, operator, parsed_value)
|
122
113
|
end
|
123
114
|
|
124
115
|
def parse_aggregation_operator(aggregator_operator)
|
@@ -296,5 +287,26 @@ module ForestLiana
|
|
296
287
|
raise ForestLiana::Errors::HTTP422Error.new('Invalid condition format')
|
297
288
|
end
|
298
289
|
end
|
290
|
+
|
291
|
+
private
|
292
|
+
|
293
|
+
def prepare_value_for_operator(operator, value)
|
294
|
+
# parenthesis around the parsed_value are required to make the `IN` operator work
|
295
|
+
operator == 'in' ? "(#{value})" : value
|
296
|
+
end
|
297
|
+
|
298
|
+
def sanitize_condition(field_and_operator, operator, parsed_value)
|
299
|
+
if Rails::VERSION::MAJOR < 5
|
300
|
+
condition_value = prepare_value_for_operator(operator, ActiveRecord::Base.sanitize(parsed_value))
|
301
|
+
"#{field_and_operator} #{condition_value}"
|
302
|
+
# NOTICE: sanitize method as been removed in Rails 5.1 and sanitize_sql introduced in Rails 5.2.
|
303
|
+
elsif Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR == 1
|
304
|
+
condition_value = prepare_value_for_operator(operator, ActiveRecord::Base.connection.quote(parsed_value))
|
305
|
+
"#{field_and_operator} #{condition_value}"
|
306
|
+
else
|
307
|
+
condition_value = prepare_value_for_operator(operator, '?')
|
308
|
+
ActiveRecord::Base.sanitize_sql(["#{field_and_operator} #{condition_value}", parsed_value])
|
309
|
+
end
|
310
|
+
end
|
299
311
|
end
|
300
312
|
end
|
data/lib/forest_liana/version.rb
CHANGED
@@ -154,7 +154,7 @@ describe 'Requesting Actions routes', :type => :request do
|
|
154
154
|
it 'should respond 200' do
|
155
155
|
post '/forest/actions/my_action/hooks/load', params: JSON.dump(params), headers: headers
|
156
156
|
expect(response.status).to eq(200)
|
157
|
-
expect(JSON.parse(response.body)).to eq({'fields' => [foo.merge({:value => nil}).stringify_keys]})
|
157
|
+
expect(JSON.parse(response.body)).to eq({'fields' => [foo.merge({:value => nil}).transform_keys { |key| key.to_s.camelize(:lower) }.stringify_keys]})
|
158
158
|
end
|
159
159
|
|
160
160
|
it 'should respond 500 with bad params' do
|
@@ -184,7 +184,8 @@ describe 'Requesting Actions routes', :type => :request do
|
|
184
184
|
ids: [1],
|
185
185
|
fields: [updated_foo],
|
186
186
|
collection_name: 'Island',
|
187
|
-
changed_field: 'foo'
|
187
|
+
changed_field: 'foo',
|
188
|
+
is_read_only: true
|
188
189
|
}
|
189
190
|
}
|
190
191
|
}
|
@@ -195,6 +196,7 @@ describe 'Requesting Actions routes', :type => :request do
|
|
195
196
|
expected = updated_foo.clone.merge({:value => 'baz'})
|
196
197
|
expected[:widgetEdit] = nil
|
197
198
|
expected.delete(:widget)
|
199
|
+
expected = expected.transform_keys { |key| key.to_s.camelize(:lower) }
|
198
200
|
expect(JSON.parse(response.body)).to eq({'fields' => [expected.stringify_keys]})
|
199
201
|
end
|
200
202
|
|
@@ -230,6 +232,9 @@ describe 'Requesting Actions routes', :type => :request do
|
|
230
232
|
expected_foo = updated_foo.clone.merge({ :widgetEdit => nil})
|
231
233
|
expected_foo.delete(:widget)
|
232
234
|
|
235
|
+
expected_enum = expected_enum.transform_keys { |key| key.to_s.camelize(:lower) }
|
236
|
+
expected_foo = expected_foo.transform_keys { |key| key.to_s.camelize(:lower) }
|
237
|
+
|
233
238
|
expect(JSON.parse(response.body)).to eq({'fields' => [expected_foo.stringify_keys, expected_enum.stringify_keys]})
|
234
239
|
end
|
235
240
|
|
@@ -253,6 +258,9 @@ describe 'Requesting Actions routes', :type => :request do
|
|
253
258
|
expected_foo = foo.clone.merge({ :widgetEdit => nil})
|
254
259
|
expected_foo.delete(:widget)
|
255
260
|
|
261
|
+
expected_multiple_enum = expected_multiple_enum.transform_keys { |key| key.to_s.camelize(:lower) }
|
262
|
+
expected_foo = expected_foo.transform_keys { |key| key.to_s.camelize(:lower) }
|
263
|
+
|
256
264
|
expect(JSON.parse(response.body)).to eq({'fields' => [expected_foo.stringify_keys, expected_multiple_enum.stringify_keys]})
|
257
265
|
end
|
258
266
|
|
@@ -277,6 +285,9 @@ describe 'Requesting Actions routes', :type => :request do
|
|
277
285
|
expected_foo = foo.clone.merge({ :widgetEdit => nil})
|
278
286
|
expected_foo.delete(:widget)
|
279
287
|
|
288
|
+
expected_multiple_enum = expected_multiple_enum.transform_keys { |key| key.to_s.camelize(:lower) }
|
289
|
+
expected_foo = expected_foo.transform_keys { |key| key.to_s.camelize(:lower) }
|
290
|
+
|
280
291
|
expect(JSON.parse(response.body)).to eq({'fields' => [expected_foo.stringify_keys, expected_multiple_enum.stringify_keys]})
|
281
292
|
end
|
282
293
|
end
|
@@ -11,6 +11,7 @@ module ForestLiana
|
|
11
11
|
let(:date_condition_1) { { 'field' => 'created_at', 'operator' => 'before', 'value' => 2.hours.ago } }
|
12
12
|
let(:date_condition_2) { { 'field' => 'created_at', 'operator' => 'today' } }
|
13
13
|
let(:date_condition_3) { { 'field' => 'created_at', 'operator' => 'previous_x_days', 'value' => 2 } }
|
14
|
+
let(:presence_condition) { { 'field' => 'name', 'operator' => 'present' } }
|
14
15
|
|
15
16
|
before {
|
16
17
|
island = Island.create!(name: "L'île de la muerta")
|
@@ -274,6 +275,11 @@ module ForestLiana
|
|
274
275
|
let(:filters) { { 'aggregator' => 'or', 'conditions' => [simple_condition_2, simple_condition_3] } }
|
275
276
|
it { expect(resource.where(query).count).to eq 2 }
|
276
277
|
end
|
278
|
+
|
279
|
+
context "'name ends_with \"3\"' 'or' 'name is not null'" do
|
280
|
+
let(:filters) { { 'aggregator' => 'or', 'conditions' => [simple_condition_2, presence_condition] } }
|
281
|
+
it { expect(resource.where(query).count).to eq 3 }
|
282
|
+
end
|
277
283
|
end
|
278
284
|
|
279
285
|
describe 'parse_condition' do
|
@@ -281,7 +287,27 @@ module ForestLiana
|
|
281
287
|
let(:result) { filter_parser.parse_condition(condition) }
|
282
288
|
|
283
289
|
context 'on valid condition' do
|
284
|
-
|
290
|
+
context 'when the condition uses the contains operator' do
|
291
|
+
it { expect(result).to eq "\"trees\".\"name\" LIKE '%3'" }
|
292
|
+
end
|
293
|
+
|
294
|
+
context 'when the condition uses the blank operator' do
|
295
|
+
let(:condition) { { 'field' => 'name', 'operator' => 'blank' } }
|
296
|
+
|
297
|
+
it { expect(result).to eq "\"trees\".\"name\" IS NULL" }
|
298
|
+
end
|
299
|
+
|
300
|
+
context 'when the condition uses the presence operator' do
|
301
|
+
let(:condition) { presence_condition }
|
302
|
+
|
303
|
+
it { expect(result).to eq "\"trees\".\"name\" IS NOT NULL" }
|
304
|
+
end
|
305
|
+
|
306
|
+
context 'when the condition uses the in operator' do
|
307
|
+
let(:condition) { { 'field' => 'name', 'operator' => 'in', 'value' => ['Tree n1', 'Tree n3'] } }
|
308
|
+
|
309
|
+
it { expect(result).to eq "\"trees\".\"name\" IN ('Tree n1','Tree n3')" }
|
310
|
+
end
|
285
311
|
end
|
286
312
|
|
287
313
|
context 'on belongs_to condition' do
|
@@ -84,7 +84,7 @@ module ForestLiana
|
|
84
84
|
subject.perform
|
85
85
|
|
86
86
|
expect(subject.record).to be nil
|
87
|
-
expect(subject.errors[0][:detail]).to eq 'Couldn\'t find User with \'id\'=1 [WHERE (("users"."id" >
|
87
|
+
expect(subject.errors[0][:detail]).to eq 'Couldn\'t find User with \'id\'=1 [WHERE (("users"."id" > 2))]'
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
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.
|
4
|
+
version: 7.0.2
|
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-
|
11
|
+
date: 2021-08-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -500,9 +500,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
500
500
|
version: '0'
|
501
501
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
502
502
|
requirements:
|
503
|
-
- - "
|
503
|
+
- - ">="
|
504
504
|
- !ruby/object:Gem::Version
|
505
|
-
version:
|
505
|
+
version: '0'
|
506
506
|
requirements: []
|
507
507
|
rubygems_version: 3.1.2
|
508
508
|
signing_key:
|
@@ -510,170 +510,170 @@ specification_version: 4
|
|
510
510
|
summary: Official Rails Liana for Forest
|
511
511
|
test_files:
|
512
512
|
- test/routing/route_test.rb
|
513
|
-
- test/forest_liana_test.rb
|
514
|
-
- test/services/forest_liana/schema_adapter_test.rb
|
515
|
-
- test/services/forest_liana/operator_date_interval_parser_test.rb
|
516
|
-
- test/fixtures/string_field.yml
|
517
|
-
- test/fixtures/reference.yml
|
518
|
-
- test/fixtures/has_one_field.yml
|
519
|
-
- test/fixtures/tree.yml
|
520
|
-
- test/fixtures/serialize_field.yml
|
521
|
-
- test/fixtures/has_many_field.yml
|
522
|
-
- test/fixtures/owner.yml
|
523
|
-
- test/fixtures/belongs_to_field.yml
|
524
|
-
- test/fixtures/has_many_through_field.yml
|
525
|
-
- test/dummy/README.rdoc
|
526
|
-
- test/dummy/config.ru
|
527
513
|
- test/dummy/Rakefile
|
514
|
+
- test/dummy/bin/setup
|
515
|
+
- test/dummy/bin/bundle
|
516
|
+
- test/dummy/bin/rake
|
517
|
+
- test/dummy/bin/rails
|
518
|
+
- test/dummy/public/500.html
|
519
|
+
- test/dummy/public/404.html
|
520
|
+
- test/dummy/public/favicon.ico
|
521
|
+
- test/dummy/public/422.html
|
528
522
|
- test/dummy/db/schema.rb
|
529
523
|
- test/dummy/db/migrate/20150608131610_create_float_field.rb
|
530
|
-
- test/dummy/db/migrate/
|
531
|
-
- test/dummy/db/migrate/
|
532
|
-
- test/dummy/db/migrate/
|
533
|
-
- test/dummy/db/migrate/
|
534
|
-
- test/dummy/db/migrate/
|
524
|
+
- test/dummy/db/migrate/20150608150016_create_has_many_field.rb
|
525
|
+
- test/dummy/db/migrate/20160628173505_add_timestamps.rb
|
526
|
+
- test/dummy/db/migrate/20160627172810_create_owner.rb
|
527
|
+
- test/dummy/db/migrate/20150616150629_create_polymorphic_field.rb
|
528
|
+
- test/dummy/db/migrate/20150608132159_create_boolean_field.rb
|
529
|
+
- test/dummy/db/migrate/20150608133038_create_belongs_to_field.rb
|
530
|
+
- test/dummy/db/migrate/20150612112520_create_has_and_belongs_to_many_field.rb
|
535
531
|
- test/dummy/db/migrate/20160627172951_create_tree.rb
|
532
|
+
- test/dummy/db/migrate/20150623115554_create_has_many_class_name_field.rb
|
533
|
+
- test/dummy/db/migrate/20150608131603_create_decimal_field.rb
|
536
534
|
- test/dummy/db/migrate/20150608130516_create_date_field.rb
|
535
|
+
- test/dummy/db/migrate/20150608133044_create_has_one_field.rb
|
537
536
|
- test/dummy/db/migrate/20150608131430_create_integer_field.rb
|
538
|
-
- test/dummy/db/migrate/20150608133038_create_belongs_to_field.rb
|
539
|
-
- test/dummy/db/migrate/20150612112520_create_has_and_belongs_to_many_field.rb
|
540
|
-
- test/dummy/db/migrate/20150608132159_create_boolean_field.rb
|
541
|
-
- test/dummy/db/migrate/20160627172810_create_owner.rb
|
542
|
-
- test/dummy/db/migrate/20150616150629_create_polymorphic_field.rb
|
543
537
|
- test/dummy/db/migrate/20150608132621_create_string_field.rb
|
544
|
-
- test/dummy/db/migrate/
|
545
|
-
- test/dummy/db/migrate/20150608150016_create_has_many_field.rb
|
538
|
+
- test/dummy/db/migrate/20170614141921_create_serialize_field.rb
|
546
539
|
- test/dummy/db/migrate/20150814081918_create_has_many_through_field.rb
|
547
|
-
- test/dummy/db/migrate/
|
548
|
-
- test/dummy/
|
540
|
+
- test/dummy/db/migrate/20150609114636_create_belongs_to_class_name_field.rb
|
541
|
+
- test/dummy/db/migrate/20181111162121_create_references_table.rb
|
542
|
+
- test/dummy/README.rdoc
|
543
|
+
- test/dummy/app/assets/stylesheets/application.css
|
544
|
+
- test/dummy/app/assets/javascripts/application.js
|
545
|
+
- test/dummy/app/assets/config/manifest.js
|
546
|
+
- test/dummy/app/helpers/application_helper.rb
|
547
|
+
- test/dummy/app/models/float_field.rb
|
548
|
+
- test/dummy/app/models/boolean_field.rb
|
549
|
+
- test/dummy/app/models/decimal_field.rb
|
550
|
+
- test/dummy/app/models/belongs_to_field.rb
|
551
|
+
- test/dummy/app/models/belongs_to_class_name_field.rb
|
552
|
+
- test/dummy/app/models/has_and_belongs_to_many_field.rb
|
553
|
+
- test/dummy/app/models/string_field.rb
|
554
|
+
- test/dummy/app/models/has_many_class_name_field.rb
|
555
|
+
- test/dummy/app/models/integer_field.rb
|
556
|
+
- test/dummy/app/models/date_field.rb
|
557
|
+
- test/dummy/app/models/serialize_field.rb
|
558
|
+
- test/dummy/app/models/owner.rb
|
559
|
+
- test/dummy/app/models/polymorphic_field.rb
|
560
|
+
- test/dummy/app/models/has_many_through_field.rb
|
561
|
+
- test/dummy/app/models/has_one_field.rb
|
562
|
+
- test/dummy/app/models/has_many_field.rb
|
563
|
+
- test/dummy/app/models/reference.rb
|
564
|
+
- test/dummy/app/models/tree.rb
|
565
|
+
- test/dummy/app/controllers/application_controller.rb
|
566
|
+
- test/dummy/app/views/layouts/application.html.erb
|
567
|
+
- test/dummy/config.ru
|
549
568
|
- test/dummy/config/secrets.yml
|
550
|
-
- test/dummy/config/application.rb
|
551
|
-
- test/dummy/config/environments/test.rb
|
552
|
-
- test/dummy/config/environments/development.rb
|
553
|
-
- test/dummy/config/environments/production.rb
|
554
569
|
- test/dummy/config/boot.rb
|
555
570
|
- test/dummy/config/locales/en.yml
|
556
|
-
- test/dummy/config/
|
557
|
-
- test/dummy/config/initializers/
|
571
|
+
- test/dummy/config/environment.rb
|
572
|
+
- test/dummy/config/initializers/inflections.rb
|
558
573
|
- test/dummy/config/initializers/assets.rb
|
559
574
|
- test/dummy/config/initializers/backtrace_silencers.rb
|
560
575
|
- test/dummy/config/initializers/mime_types.rb
|
561
|
-
- test/dummy/config/initializers/session_store.rb
|
562
576
|
- test/dummy/config/initializers/wrap_parameters.rb
|
577
|
+
- test/dummy/config/initializers/cookies_serializer.rb
|
578
|
+
- test/dummy/config/initializers/session_store.rb
|
563
579
|
- test/dummy/config/initializers/filter_parameter_logging.rb
|
564
|
-
- test/dummy/config/
|
580
|
+
- test/dummy/config/database.yml
|
565
581
|
- test/dummy/config/routes.rb
|
566
|
-
- test/dummy/
|
567
|
-
- test/dummy/
|
568
|
-
- test/dummy/
|
569
|
-
- test/dummy/
|
570
|
-
- test/dummy/app/models/boolean_field.rb
|
571
|
-
- test/dummy/app/models/float_field.rb
|
572
|
-
- test/dummy/app/models/integer_field.rb
|
573
|
-
- test/dummy/app/models/reference.rb
|
574
|
-
- test/dummy/app/models/has_one_field.rb
|
575
|
-
- test/dummy/app/models/belongs_to_class_name_field.rb
|
576
|
-
- test/dummy/app/models/tree.rb
|
577
|
-
- test/dummy/app/models/serialize_field.rb
|
578
|
-
- test/dummy/app/models/polymorphic_field.rb
|
579
|
-
- test/dummy/app/models/date_field.rb
|
580
|
-
- test/dummy/app/models/string_field.rb
|
581
|
-
- test/dummy/app/models/has_many_field.rb
|
582
|
-
- test/dummy/app/models/has_and_belongs_to_many_field.rb
|
583
|
-
- test/dummy/app/models/has_many_class_name_field.rb
|
584
|
-
- test/dummy/app/models/decimal_field.rb
|
585
|
-
- test/dummy/app/models/owner.rb
|
586
|
-
- test/dummy/app/models/belongs_to_field.rb
|
587
|
-
- test/dummy/app/models/has_many_through_field.rb
|
588
|
-
- test/dummy/app/helpers/application_helper.rb
|
589
|
-
- test/dummy/app/views/layouts/application.html.erb
|
590
|
-
- test/dummy/app/assets/javascripts/application.js
|
591
|
-
- test/dummy/app/assets/stylesheets/application.css
|
592
|
-
- test/dummy/app/assets/config/manifest.js
|
593
|
-
- test/dummy/app/controllers/application_controller.rb
|
594
|
-
- test/dummy/bin/setup
|
595
|
-
- test/dummy/bin/bundle
|
596
|
-
- test/dummy/bin/rake
|
597
|
-
- test/dummy/bin/rails
|
582
|
+
- test/dummy/config/environments/production.rb
|
583
|
+
- test/dummy/config/environments/development.rb
|
584
|
+
- test/dummy/config/environments/test.rb
|
585
|
+
- test/dummy/config/application.rb
|
598
586
|
- test/test_helper.rb
|
599
|
-
-
|
587
|
+
- test/fixtures/serialize_field.yml
|
588
|
+
- test/fixtures/has_one_field.yml
|
589
|
+
- test/fixtures/string_field.yml
|
590
|
+
- test/fixtures/tree.yml
|
591
|
+
- test/fixtures/has_many_field.yml
|
592
|
+
- test/fixtures/reference.yml
|
593
|
+
- test/fixtures/owner.yml
|
594
|
+
- test/fixtures/belongs_to_field.yml
|
595
|
+
- test/fixtures/has_many_through_field.yml
|
596
|
+
- test/services/forest_liana/schema_adapter_test.rb
|
597
|
+
- test/services/forest_liana/operator_date_interval_parser_test.rb
|
598
|
+
- test/forest_liana_test.rb
|
600
599
|
- spec/helpers/forest_liana/query_helper_spec.rb
|
601
|
-
- spec/
|
602
|
-
- spec/services/forest_liana/resource_updater_spec.rb
|
603
|
-
- spec/services/forest_liana/pie_stat_getter_spec.rb
|
604
|
-
- spec/services/forest_liana/permissions_checker_live_queries_spec.rb
|
605
|
-
- spec/services/forest_liana/ip_whitelist_checker_spec.rb
|
606
|
-
- spec/services/forest_liana/line_stat_getter_spec.rb
|
607
|
-
- spec/services/forest_liana/schema_adapter_spec.rb
|
608
|
-
- spec/services/forest_liana/resources_getter_spec.rb
|
609
|
-
- spec/services/forest_liana/smart_action_field_validator_spec.rb
|
610
|
-
- spec/services/forest_liana/has_many_getter_spec.rb
|
611
|
-
- spec/services/forest_liana/apimap_sorter_spec.rb
|
612
|
-
- spec/services/forest_liana/filters_parser_spec.rb
|
613
|
-
- spec/services/forest_liana/permissions_checker_acl_enabled_spec.rb
|
614
|
-
- spec/services/forest_liana/permissions_formatter_spec.rb
|
615
|
-
- spec/services/forest_liana/permissions_getter_spec.rb
|
616
|
-
- spec/services/forest_liana/value_stat_getter_spec.rb
|
617
|
-
- spec/services/forest_liana/permissions_checker_acl_disabled_spec.rb
|
618
|
-
- spec/spec_helper.rb
|
619
|
-
- spec/config/initializers/logger_spec.rb
|
620
|
-
- spec/lib/forest_liana/schema_file_updater_spec.rb
|
621
|
-
- spec/lib/forest_liana/bootstrapper_spec.rb
|
622
|
-
- spec/requests/stats_spec.rb
|
623
|
-
- spec/requests/actions_controller_spec.rb
|
624
|
-
- spec/requests/authentications_spec.rb
|
625
|
-
- spec/requests/resources_spec.rb
|
626
|
-
- spec/dummy/README.rdoc
|
627
|
-
- spec/dummy/config.ru
|
600
|
+
- spec/helpers/forest_liana/schema_helper_spec.rb
|
628
601
|
- spec/dummy/Rakefile
|
602
|
+
- spec/dummy/bin/setup
|
603
|
+
- spec/dummy/bin/bundle
|
604
|
+
- spec/dummy/bin/rake
|
605
|
+
- spec/dummy/bin/rails
|
629
606
|
- spec/dummy/db/schema.rb
|
630
|
-
- spec/dummy/db/migrate/20190226173051_create_isle.rb
|
631
607
|
- spec/dummy/db/migrate/20190716130830_add_age_to_tree.rb
|
608
|
+
- spec/dummy/db/migrate/20210511141752_create_owners.rb
|
609
|
+
- spec/dummy/db/migrate/20190716135241_add_type_to_user.rb
|
632
610
|
- spec/dummy/db/migrate/20210326140855_create_locations.rb
|
633
611
|
- spec/dummy/db/migrate/20190226174951_create_tree.rb
|
634
612
|
- spec/dummy/db/migrate/20210326110524_create_references.rb
|
635
|
-
- spec/dummy/db/migrate/20210511141752_create_owners.rb
|
636
|
-
- spec/dummy/db/migrate/20190716135241_add_type_to_user.rb
|
637
613
|
- spec/dummy/db/migrate/20190226172951_create_user.rb
|
638
614
|
- spec/dummy/db/migrate/20210526084712_create_products.rb
|
639
|
-
- spec/dummy/
|
615
|
+
- spec/dummy/db/migrate/20190226173051_create_isle.rb
|
616
|
+
- spec/dummy/README.rdoc
|
617
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
618
|
+
- spec/dummy/app/assets/javascripts/application.js
|
619
|
+
- spec/dummy/app/assets/config/manifest.js
|
620
|
+
- spec/dummy/app/helpers/application_helper.rb
|
621
|
+
- spec/dummy/app/models/island.rb
|
622
|
+
- spec/dummy/app/models/product.rb
|
623
|
+
- spec/dummy/app/models/user.rb
|
624
|
+
- spec/dummy/app/models/owner.rb
|
625
|
+
- spec/dummy/app/models/location.rb
|
626
|
+
- spec/dummy/app/models/reference.rb
|
627
|
+
- spec/dummy/app/models/tree.rb
|
628
|
+
- spec/dummy/app/controllers/forest/islands_controller.rb
|
629
|
+
- spec/dummy/app/controllers/application_controller.rb
|
630
|
+
- spec/dummy/app/config/routes.rb
|
631
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
632
|
+
- spec/dummy/config.ru
|
640
633
|
- spec/dummy/config/secrets.yml
|
641
|
-
- spec/dummy/config/application.rb
|
642
|
-
- spec/dummy/config/environments/test.rb
|
643
|
-
- spec/dummy/config/environments/development.rb
|
644
|
-
- spec/dummy/config/environments/production.rb
|
645
634
|
- spec/dummy/config/boot.rb
|
646
|
-
- spec/dummy/config/
|
647
|
-
- spec/dummy/config/initializers/
|
635
|
+
- spec/dummy/config/environment.rb
|
636
|
+
- spec/dummy/config/initializers/inflections.rb
|
648
637
|
- spec/dummy/config/initializers/assets.rb
|
649
638
|
- spec/dummy/config/initializers/backtrace_silencers.rb
|
639
|
+
- spec/dummy/config/initializers/forest_liana.rb
|
650
640
|
- spec/dummy/config/initializers/mime_types.rb
|
651
|
-
- spec/dummy/config/initializers/session_store.rb
|
652
641
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
642
|
+
- spec/dummy/config/initializers/cookies_serializer.rb
|
643
|
+
- spec/dummy/config/initializers/session_store.rb
|
653
644
|
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
654
|
-
- spec/dummy/config/
|
655
|
-
- spec/dummy/config/initializers/forest_liana.rb
|
645
|
+
- spec/dummy/config/database.yml
|
656
646
|
- spec/dummy/config/routes.rb
|
657
|
-
- spec/dummy/
|
647
|
+
- spec/dummy/config/environments/production.rb
|
648
|
+
- spec/dummy/config/environments/development.rb
|
649
|
+
- spec/dummy/config/environments/test.rb
|
650
|
+
- spec/dummy/config/application.rb
|
658
651
|
- spec/dummy/lib/forest_liana/collections/island.rb
|
659
652
|
- spec/dummy/lib/forest_liana/collections/user.rb
|
660
|
-
- spec/dummy/
|
661
|
-
- spec/
|
662
|
-
- spec/
|
663
|
-
- spec/
|
664
|
-
- spec/
|
665
|
-
- spec/
|
666
|
-
- spec/
|
667
|
-
- spec/
|
668
|
-
- spec/
|
669
|
-
- spec/
|
670
|
-
- spec/
|
671
|
-
- spec/
|
672
|
-
- spec/
|
673
|
-
- spec/
|
674
|
-
- spec/
|
675
|
-
- spec/
|
676
|
-
- spec/
|
677
|
-
- spec/
|
678
|
-
- spec/
|
653
|
+
- spec/dummy/lib/forest_liana/collections/location.rb
|
654
|
+
- spec/config/initializers/logger_spec.rb
|
655
|
+
- spec/services/forest_liana/scope_manager_spec.rb
|
656
|
+
- spec/services/forest_liana/resources_getter_spec.rb
|
657
|
+
- spec/services/forest_liana/resource_updater_spec.rb
|
658
|
+
- spec/services/forest_liana/value_stat_getter_spec.rb
|
659
|
+
- spec/services/forest_liana/permissions_getter_spec.rb
|
660
|
+
- spec/services/forest_liana/pie_stat_getter_spec.rb
|
661
|
+
- spec/services/forest_liana/permissions_checker_live_queries_spec.rb
|
662
|
+
- spec/services/forest_liana/permissions_checker_acl_disabled_spec.rb
|
663
|
+
- spec/services/forest_liana/permissions_checker_acl_enabled_spec.rb
|
664
|
+
- spec/services/forest_liana/smart_action_field_validator_spec.rb
|
665
|
+
- spec/services/forest_liana/filters_parser_spec.rb
|
666
|
+
- spec/services/forest_liana/apimap_sorter_spec.rb
|
667
|
+
- spec/services/forest_liana/schema_adapter_spec.rb
|
668
|
+
- spec/services/forest_liana/has_many_getter_spec.rb
|
669
|
+
- spec/services/forest_liana/line_stat_getter_spec.rb
|
670
|
+
- spec/services/forest_liana/ip_whitelist_checker_spec.rb
|
671
|
+
- spec/services/forest_liana/permissions_formatter_spec.rb
|
672
|
+
- spec/spec_helper.rb
|
673
|
+
- spec/lib/forest_liana/schema_file_updater_spec.rb
|
674
|
+
- spec/lib/forest_liana/bootstrapper_spec.rb
|
679
675
|
- spec/rails_helper.rb
|
676
|
+
- spec/requests/stats_spec.rb
|
677
|
+
- spec/requests/actions_controller_spec.rb
|
678
|
+
- spec/requests/resources_spec.rb
|
679
|
+
- spec/requests/authentications_spec.rb
|