forest_liana 7.0.0.beta.5 → 7.0.2

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
  SHA256:
3
- metadata.gz: 36a124d9be3926a24e7ab38fa5921f90a4fa62eb1a037513237db19137c08e6c
4
- data.tar.gz: 11555d1d6818160acd6024f76acbf38746a9e7ccda11b7b14126834cf29dc576
3
+ metadata.gz: b09187df0403cde37e732b39f06e89a4df087f1d91fe7e13a80aafd3490b33e7
4
+ data.tar.gz: d81c4f22e697da9926c8e35736ce76eb60eca5f5b7d5579cb9140f680dfd15d9
5
5
  SHA512:
6
- metadata.gz: 98ab606746f67e5bf1beec87b7ff67233d4d47b6d0456d87ff8e4f5d77c7d3f198b12a9873f6f73d7777f44b93c0c449b3cff229afae88937126b05a8e865ffc
7
- data.tar.gz: 7f9f8ef793f09b227a9b8ad5c66e2c70e11c25453bb974838d43aa2e1dc3d538c6d0f8d29816e470ccd3ff22c4f77e8b178b618b87e26f4e307c5fcc60282612
6
+ metadata.gz: 40e99d1d96cd7142fb8ae68a4aab488eb9fd3ac67a36e2e78213a3e5b63c9e1f516840b0648255e4f2efe3c983ba0e4146bdac8081e5e8fba5a2c98201be62c8
7
+ data.tar.gz: f3a7a15486d28e64d62157fdf2fbef4779ab67b78423e3b75f0dcebf31e8549c3a8ddb0bed3234709ee5776416dced7e9e39ee755527775e4b5cea09265543b7
@@ -78,7 +78,9 @@ module ForestLiana
78
78
  end
79
79
  end
80
80
 
81
- updated_field
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
- # parenthesis around the parsed_value are required to make the `IN` operator work
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
@@ -1,3 +1,3 @@
1
1
  module ForestLiana
2
- VERSION = "7.0.0.beta.5"
2
+ VERSION = "7.0.2"
3
3
  end
@@ -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
- it { expect(result).to eq "\"trees\".\"name\" LIKE ('%3')" }
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" > (2)))]'
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.0.beta.5
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-07-09 00:00:00.000000000 Z
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: 1.3.1
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/20150623115554_create_has_many_class_name_field.rb
531
- - test/dummy/db/migrate/20181111162121_create_references_table.rb
532
- - test/dummy/db/migrate/20170614141921_create_serialize_field.rb
533
- - test/dummy/db/migrate/20150608133044_create_has_one_field.rb
534
- - test/dummy/db/migrate/20150609114636_create_belongs_to_class_name_field.rb
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/20160628173505_add_timestamps.rb
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/20150608131603_create_decimal_field.rb
548
- - test/dummy/config/environment.rb
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/database.yml
557
- - test/dummy/config/initializers/cookies_serializer.rb
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/initializers/inflections.rb
580
+ - test/dummy/config/database.yml
565
581
  - test/dummy/config/routes.rb
566
- - test/dummy/public/500.html
567
- - test/dummy/public/404.html
568
- - test/dummy/public/422.html
569
- - test/dummy/public/favicon.ico
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
- - spec/helpers/forest_liana/schema_helper_spec.rb
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/services/forest_liana/scope_manager_spec.rb
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/config/environment.rb
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/database.yml
647
- - spec/dummy/config/initializers/cookies_serializer.rb
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/initializers/inflections.rb
655
- - spec/dummy/config/initializers/forest_liana.rb
645
+ - spec/dummy/config/database.yml
656
646
  - spec/dummy/config/routes.rb
657
- - spec/dummy/lib/forest_liana/collections/location.rb
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/app/models/location.rb
661
- - spec/dummy/app/models/island.rb
662
- - spec/dummy/app/models/reference.rb
663
- - spec/dummy/app/models/tree.rb
664
- - spec/dummy/app/models/user.rb
665
- - spec/dummy/app/models/product.rb
666
- - spec/dummy/app/models/owner.rb
667
- - spec/dummy/app/helpers/application_helper.rb
668
- - spec/dummy/app/config/routes.rb
669
- - spec/dummy/app/views/layouts/application.html.erb
670
- - spec/dummy/app/assets/javascripts/application.js
671
- - spec/dummy/app/assets/stylesheets/application.css
672
- - spec/dummy/app/assets/config/manifest.js
673
- - spec/dummy/app/controllers/application_controller.rb
674
- - spec/dummy/app/controllers/forest/islands_controller.rb
675
- - spec/dummy/bin/setup
676
- - spec/dummy/bin/bundle
677
- - spec/dummy/bin/rake
678
- - spec/dummy/bin/rails
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