forest_liana 6.2.3 → 6.3.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: ffea713d57b3d19916229ddc7a276387f35dbd9b9d349358e112cbf82205d9bc
4
- data.tar.gz: 59073890f8a25decbcc7521eeeaa15deb423d63a36e8d30429c3c74850d73896
3
+ metadata.gz: 0d8c0675fe5c776a7168baf4e5375ead76bd8319b75c29c620e6888bbd9bfaec
4
+ data.tar.gz: 5d20db5792e2b1a637545cfe4a024df625db72004671fb47fa3eb15c68801736
5
5
  SHA512:
6
- metadata.gz: 8357f07aa09f95192eae3967f87b4b0332ea1eb1f6a9629c254a829a8ff3cdb6363d6831306ce06ac22090a52745ef52173f6b957d009742bd1348ee857c79be
7
- data.tar.gz: 449f75579dcf35d7a80219e5d9ecd4ace7ffccef86b72c17c2d0682b010727e7482e1fa12aa5ad20a127584e9a56f5277200b178fe3da303189f6d6dbd47aa84
6
+ metadata.gz: 8de8c18b1b18b60f8d7096734e16a187a4e0d87cd9d5e00ef6fa70e7a8efb042bcbc08c084c33102c810c11da56402a8f77f554e4bbfbe4e9de60e3b3b90fdcf
7
+ data.tar.gz: 9959a3a3a53996d7cfcf638f82c24b93a471a01cb6f7eb75e20c459711235e68ea3077c9d44a0d606f5e4a396a5739649945d26d617d1e16da58234e6e03454f
@@ -5,7 +5,7 @@ module ForestLiana
5
5
  class AuthenticationController < ForestLiana::BaseController
6
6
  START_AUTHENTICATION_ROUTE = 'authentication'
7
7
  CALLBACK_AUTHENTICATION_ROUTE = 'authentication/callback'
8
- LOGOUT_ROUTE = 'authentication/logout';
8
+ LOGOUT_ROUTE = 'authentication/logout'
9
9
  PUBLIC_ROUTES = [
10
10
  "/#{START_AUTHENTICATION_ROUTE}",
11
11
  "/#{CALLBACK_AUTHENTICATION_ROUTE}",
@@ -48,6 +48,7 @@ class ForestLiana::Model::Action
48
48
  field[:default_value] = nil unless field.key?(:default_value)
49
49
  field[:enums] = nil unless field.key?(:enums)
50
50
  field[:is_required] = false unless field.key?(:is_required)
51
+ field[:is_read_only] = false unless field.key?(:is_read_only)
51
52
  field[:reference] = nil unless field.key?(:reference)
52
53
  field[:description] = nil unless field.key?(:description)
53
54
  field[:widget] = nil unless field.key?(:widget)
@@ -47,6 +47,7 @@ module ForestLiana
47
47
  'default_value',
48
48
  'enums',
49
49
  'is_required',
50
+ 'is_read_only',
50
51
  'reference',
51
52
  'description',
52
53
  'position',
@@ -3,6 +3,9 @@ module ForestLiana
3
3
  attr_accessor :record
4
4
 
5
5
  def client_timezone
6
+ # As stated here https://github.com/ankane/groupdate#for-sqlite
7
+ # groupdate does not handle timezone for SQLite
8
+ return nil if 'SQLite' == ActiveRecord::Base.connection.adapter_name
6
9
  @params[:timezone]
7
10
  end
8
11
 
@@ -26,9 +29,10 @@ module ForestLiana
26
29
  value = FiltersParser.new(@params[:filters], value, @params[:timezone]).apply_filters
27
30
  end
28
31
 
32
+ Groupdate.week_start = :monday
33
+
29
34
  value = value.send(time_range, group_by_date_field, {
30
- time_zone: client_timezone,
31
- week_start: :mon
35
+ time_zone: client_timezone
32
36
  })
33
37
 
34
38
  value = value.send(@params[:aggregate].downcase, @params[:aggregate_field])
@@ -4,22 +4,20 @@ module ForestLiana
4
4
  class OidcClientManager
5
5
  def self.get_client_for_callback_url(callback_url)
6
6
  begin
7
- client_data = Rails.cache.read(callback_url) || nil
8
- if client_data.nil?
9
- configuration = ForestLiana::OidcConfigurationRetriever.retrieve()
10
-
11
- if ForestLiana.forest_client_id.nil?
7
+ configuration = ForestLiana::OidcConfigurationRetriever.retrieve()
8
+ if ForestLiana.forest_client_id.nil?
9
+ client_data = Rails.cache.read("#{callback_url}-#{ForestLiana.env_secret}-client-data") || nil
10
+ if client_data.nil?
12
11
  client_credentials = ForestLiana::OidcDynamicClientRegistrator.register({
13
12
  token_endpoint_auth_method: 'none',
14
13
  redirect_uris: [callback_url],
15
14
  registration_endpoint: configuration['registration_endpoint']
16
15
  })
17
- else
18
- client_credentials = { 'client_id' => ForestLiana.forest_client_id }
16
+ client_data = { :client_id => client_credentials['client_id'], :issuer => configuration['issuer'] }
17
+ Rails.cache.write("#{callback_url}-#{ForestLiana.env_secret}-client-data", client_data)
19
18
  end
20
-
21
- client_data = { :client_id => client_credentials['client_id'], :issuer => configuration['issuer'] }
22
- Rails.cache.write(callback_url, client_data)
19
+ else
20
+ client_data = { :client_id => ForestLiana.forest_client_id, :issuer => configuration['issuer'] }
23
21
  end
24
22
 
25
23
  OpenIDConnect::Client.new(
@@ -30,7 +28,7 @@ module ForestLiana
30
28
  token_endpoint: '/oidc/token',
31
29
  )
32
30
  rescue => error
33
- Rails.cache.delete(callback_url)
31
+ Rails.cache.delete("#{callback_url}-#{ForestLiana.env_secret}-client-data")
34
32
  raise error
35
33
  end
36
34
  end
@@ -73,30 +73,34 @@ module ForestLiana
73
73
  def get_date_filter(operator, value)
74
74
  return nil unless is_date_operator? operator
75
75
 
76
- case operator
77
- when OPERATOR_FUTURE
78
- return ">= '#{Time.now}'"
79
- when OPERATOR_PAST
80
- return "<= '#{Time.now}'"
81
- when OPERATOR_TODAY
82
- return "BETWEEN '#{to_client_timezone(Time.now.beginning_of_day)}' " +
83
- "AND '#{to_client_timezone(Time.now.end_of_day)}'"
84
- when OPERATOR_PREVIOUS_X_DAYS
85
- ensure_integer_value(value)
86
- return "BETWEEN '" +
87
- "#{to_client_timezone(Integer(value).day.ago.beginning_of_day)}'" +
88
- " AND '#{to_client_timezone(1.day.ago.end_of_day)}'"
89
- when OPERATOR_PREVIOUS_X_DAYS_TO_DATE
90
- ensure_integer_value(value)
91
- return "BETWEEN '" +
92
- "#{to_client_timezone((Integer(value) - 1).day.ago.beginning_of_day)}'" +
93
- " AND '#{Time.now}'"
94
- when OPERATOR_BEFORE_X_HOURS_AGO
95
- ensure_integer_value(value)
96
- return "< '#{to_client_timezone((Integer(value)).hour.ago)}'"
97
- when OPERATOR_AFTER_X_HOURS_AGO
98
- ensure_integer_value(value)
99
- return "> '#{to_client_timezone((Integer(value)).hour.ago)}'"
76
+ filter = case operator
77
+ when OPERATOR_FUTURE
78
+ ">= '#{Time.now}'"
79
+ when OPERATOR_PAST
80
+ "<= '#{Time.now}'"
81
+ when OPERATOR_TODAY
82
+ "BETWEEN '#{to_client_timezone(Time.now.beginning_of_day)}' " +
83
+ "AND '#{to_client_timezone(Time.now.end_of_day)}'"
84
+ when OPERATOR_PREVIOUS_X_DAYS
85
+ ensure_integer_value(value)
86
+ "BETWEEN '" +
87
+ "#{to_client_timezone(Integer(value).day.ago.beginning_of_day)}'" +
88
+ " AND '#{to_client_timezone(1.day.ago.end_of_day)}'"
89
+ when OPERATOR_PREVIOUS_X_DAYS_TO_DATE
90
+ ensure_integer_value(value)
91
+ "BETWEEN '" +
92
+ "#{to_client_timezone((Integer(value) - 1).day.ago.beginning_of_day)}'" +
93
+ " AND '#{Time.now}'"
94
+ when OPERATOR_BEFORE_X_HOURS_AGO
95
+ ensure_integer_value(value)
96
+ "< '#{(Integer(value)).hour.ago}'"
97
+ when OPERATOR_AFTER_X_HOURS_AGO
98
+ ensure_integer_value(value)
99
+ "> '#{(Integer(value)).hour.ago}'"
100
+ end
101
+
102
+ if filter != nil
103
+ return filter
100
104
  end
101
105
 
102
106
  duration = PERIODS[operator][:duration]
@@ -53,6 +53,18 @@ module ForestLiana
53
53
  collection.actions.find {|action| action.name == action_name}
54
54
  end
55
55
 
56
+ def generate_action_hooks()
57
+ @collections_sent.each do |collection|
58
+ collection['actions'].each do |action|
59
+ c = get_collection(collection['name'])
60
+ a = get_action(c, action['name'])
61
+ load = !a.hooks.nil? && a.hooks.key?(:load) && a.hooks[:load].is_a?(Proc)
62
+ change = !a.hooks.nil? && a.hooks.key?(:change) && a.hooks[:change].is_a?(Hash) ? a.hooks[:change].keys : []
63
+ action['hooks'] = {:load => load, :change => change}
64
+ end
65
+ end
66
+ end
67
+
56
68
  def generate_apimap
57
69
  create_apimap
58
70
  require_lib_forest_liana
@@ -60,18 +72,8 @@ module ForestLiana
60
72
 
61
73
  if Rails.env.development?
62
74
  @collections_sent = ForestLiana.apimap.as_json
63
-
64
- @collections_sent.each do |collection|
65
- collection['actions'].each do |action|
66
- c = get_collection(collection['name'])
67
- a = get_action(c, action['name'])
68
- load = !a.hooks.nil? && a.hooks.key?(:load) && a.hooks[:load].is_a?(Proc)
69
- change = !a.hooks.nil? && a.hooks.key?(:change) && a.hooks[:change].is_a?(Hash) ? a.hooks[:change].keys : []
70
- action['hooks'] = {:load => load, :change => change}
71
- end
72
- end
73
-
74
75
  @meta_sent = ForestLiana.meta
76
+ generate_action_hooks
75
77
  SchemaFileUpdater.new(SCHEMA_FILENAME, @collections_sent, @meta_sent).perform()
76
78
  else
77
79
  if File.exists?(SCHEMA_FILENAME)
@@ -79,6 +81,7 @@ module ForestLiana
79
81
  content = JSON.parse(File.read(SCHEMA_FILENAME))
80
82
  @collections_sent = content['collections']
81
83
  @meta_sent = content['meta']
84
+ generate_action_hooks
82
85
  rescue JSON::JSONError
83
86
  FOREST_LOGGER.error "The content of .forestadmin-schema.json file is not a correct JSON."
84
87
  FOREST_LOGGER.error "The schema cannot be synchronized with Forest Admin servers."
@@ -58,6 +58,7 @@ module ForestLiana
58
58
  'default_value',
59
59
  'enums',
60
60
  'is_required',
61
+ 'is_read_only',
61
62
  'reference',
62
63
  'description',
63
64
  'position',
@@ -1,3 +1,3 @@
1
1
  module ForestLiana
2
- VERSION = "6.2.3"
2
+ VERSION = "6.3.4"
3
3
  end
@@ -0,0 +1,2 @@
1
+ class Owner < ActiveRecord::Base
2
+ end
@@ -0,0 +1,8 @@
1
+ class CreateOwners < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :owners do |t|
4
+ t.string :name
5
+ t.datetime :hired_at
6
+ end
7
+ end
8
+ end
@@ -10,7 +10,7 @@
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema.define(version: 2021_03_26_140855) do
13
+ ActiveRecord::Schema.define(version: 2021_05_11_141752) do
14
14
 
15
15
  create_table "isle", force: :cascade do |t|
16
16
  t.string "name"
@@ -27,6 +27,11 @@ ActiveRecord::Schema.define(version: 2021_03_26_140855) do
27
27
  t.index ["island_id"], name: "index_locations_on_island_id"
28
28
  end
29
29
 
30
+ create_table "owners", force: :cascade do |t|
31
+ t.string "name"
32
+ t.datetime "hired_at"
33
+ end
34
+
30
35
  create_table "references", force: :cascade do |t|
31
36
  t.datetime "created_at", precision: 6, null: false
32
37
  t.datetime "updated_at", precision: 6, null: false
@@ -26,6 +26,7 @@ describe 'Requesting Actions routes', :type => :request do
26
26
  default_value: nil,
27
27
  enums: nil,
28
28
  is_required: false,
29
+ is_read_only: false,
29
30
  reference: nil,
30
31
  description: nil,
31
32
  widget: nil,
@@ -0,0 +1,50 @@
1
+ module ForestLiana
2
+ describe LineStatGetter do
3
+ describe 'Check client_timezone function' do
4
+ describe 'with a SQLite database' do
5
+ it 'should return nil' do
6
+ expect(LineStatGetter.new(Owner, {
7
+ timezone: "Europe/Paris",
8
+ aggregate: "Count",
9
+ }).client_timezone).to eq(nil)
10
+ end
11
+ end
12
+
13
+ describe 'with a non-SQLite database' do
14
+ it 'should return the timezone' do
15
+ ActiveRecord::Base.connection.stub(:adapter_name) { 'NotSQLite' }
16
+ expect(LineStatGetter.new(Owner, {
17
+ timezone: "Europe/Paris",
18
+ aggregate: "Count",
19
+ }).client_timezone).to eq('Europe/Paris')
20
+ end
21
+ end
22
+ end
23
+
24
+ describe 'Check perform function' do
25
+ describe 'Using a Count aggregation' do
26
+ describe 'Using a Week time range' do
27
+ it 'should return consistent data based on monday as week_start ' do
28
+
29
+ # Week should start on monday
30
+ # 08-05-2021 was a Saturday
31
+ Owner.create(name: 'Michel', hired_at: Date.parse('08-05-2021'));
32
+ Owner.create(name: 'Robert', hired_at: Date.parse('09-05-2021'));
33
+ Owner.create(name: 'José', hired_at: Date.parse('10-05-2021'));
34
+ Owner.create(name: 'Yves', hired_at: Date.parse('11-05-2021'));
35
+
36
+ stat = LineStatGetter.new(Owner, {
37
+ timezone: "Europe/Paris",
38
+ aggregate: "Count",
39
+ time_range: "Week",
40
+ group_by_date_field: "hired_at",
41
+ }).perform
42
+
43
+ expect(stat.value.find { |item| item[:label] == "W18-2021" }[:values][:value]).to eq(2)
44
+ expect(stat.value.find { |item| item[:label] == "W19-2021" }[:values][:value]).to eq(2)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,16 @@
1
+ module ForestLiana
2
+ class OperatorDateIntervalParserTest < ActiveSupport::TestCase
3
+ test 'OPERATOR_AFTER_X_HOURS_AGO and OPERATOR_BEFORE_X_HOURS_AGO should not take timezone into account' do
4
+ # Setting a big timezone (GMT+10) on purpose, the timezone should not be applied on the result date
5
+ operatorDateIntervalParser = OperatorDateIntervalParser.new('Australia/Sydney')
6
+
7
+ result = operatorDateIntervalParser.get_date_filter(OperatorDateIntervalParser::OPERATOR_AFTER_X_HOURS_AGO, 2)
8
+ hourComputed = result.split('> ')[1].tr('\'', '').to_datetime.hour
9
+ assert hourComputed == Time.now.utc.hour - 2
10
+
11
+ result = operatorDateIntervalParser.get_date_filter(OperatorDateIntervalParser::OPERATOR_BEFORE_X_HOURS_AGO, 2)
12
+ hourComputed = result.split('< ')[1].tr('\'', '').to_datetime.hour
13
+ assert hourComputed == Time.now.utc.hour - 2
14
+ end
15
+ end
16
+ end
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: 6.2.3
4
+ version: 6.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Munda
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-06 00:00:00.000000000 Z
11
+ date: 2021-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: groupdate
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 2.5.2
89
+ version: 5.0.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 2.5.2
96
+ version: 5.0.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: useragent
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -326,6 +326,7 @@ files:
326
326
  - spec/dummy/app/helpers/application_helper.rb
327
327
  - spec/dummy/app/models/island.rb
328
328
  - spec/dummy/app/models/location.rb
329
+ - spec/dummy/app/models/owner.rb
329
330
  - spec/dummy/app/models/reference.rb
330
331
  - spec/dummy/app/models/tree.rb
331
332
  - spec/dummy/app/models/user.rb
@@ -360,6 +361,7 @@ files:
360
361
  - spec/dummy/db/migrate/20190716135241_add_type_to_user.rb
361
362
  - spec/dummy/db/migrate/20210326110524_create_references.rb
362
363
  - spec/dummy/db/migrate/20210326140855_create_locations.rb
364
+ - spec/dummy/db/migrate/20210511141752_create_owners.rb
363
365
  - spec/dummy/db/schema.rb
364
366
  - spec/dummy/lib/forest_liana/collections/location.rb
365
367
  - spec/dummy/lib/forest_liana/collections/user.rb
@@ -374,6 +376,7 @@ files:
374
376
  - spec/services/forest_liana/apimap_sorter_spec.rb
375
377
  - spec/services/forest_liana/filters_parser_spec.rb
376
378
  - spec/services/forest_liana/ip_whitelist_checker_spec.rb
379
+ - spec/services/forest_liana/line_stat_getter_spec.rb
377
380
  - spec/services/forest_liana/permissions_checker_acl_disabled_spec.rb
378
381
  - spec/services/forest_liana/permissions_checker_acl_enabled_spec.rb
379
382
  - spec/services/forest_liana/permissions_checker_live_queries_spec.rb
@@ -467,6 +470,7 @@ files:
467
470
  - test/forest_liana_test.rb
468
471
  - test/routing/route_test.rb
469
472
  - test/services/forest_liana/has_many_getter_test.rb
473
+ - test/services/forest_liana/operator_date_interval_parser_test.rb
470
474
  - test/services/forest_liana/pie_stat_getter_test.rb
471
475
  - test/services/forest_liana/resource_updater_test.rb
472
476
  - test/services/forest_liana/schema_adapter_test.rb
@@ -477,7 +481,7 @@ homepage: https://github.com/ForestAdmin/forest-rails
477
481
  licenses:
478
482
  - GPL-3.0
479
483
  metadata: {}
480
- post_install_message:
484
+ post_install_message:
481
485
  rdoc_options: []
482
486
  require_paths:
483
487
  - lib
@@ -493,164 +497,168 @@ required_rubygems_version: !ruby/object:Gem::Requirement
493
497
  version: '0'
494
498
  requirements: []
495
499
  rubygems_version: 3.1.2
496
- signing_key:
500
+ signing_key:
497
501
  specification_version: 4
498
502
  summary: Official Rails Liana for Forest
499
503
  test_files:
500
- - test/dummy/db/migrate/20150608133044_create_has_one_field.rb
501
- - test/dummy/db/migrate/20150608132159_create_boolean_field.rb
502
- - test/dummy/db/migrate/20160627172810_create_owner.rb
503
- - test/dummy/db/migrate/20150608131603_create_decimal_field.rb
504
- - test/dummy/db/migrate/20150608133038_create_belongs_to_field.rb
505
- - test/dummy/db/migrate/20150814081918_create_has_many_through_field.rb
506
- - test/dummy/db/migrate/20160627172951_create_tree.rb
507
- - test/dummy/db/migrate/20150608131610_create_float_field.rb
508
- - test/dummy/db/migrate/20150608150016_create_has_many_field.rb
509
- - test/dummy/db/migrate/20150608131430_create_integer_field.rb
510
- - test/dummy/db/migrate/20181111162121_create_references_table.rb
511
- - test/dummy/db/migrate/20150612112520_create_has_and_belongs_to_many_field.rb
512
- - test/dummy/db/migrate/20150608132621_create_string_field.rb
513
- - test/dummy/db/migrate/20170614141921_create_serialize_field.rb
514
- - test/dummy/db/migrate/20150608130516_create_date_field.rb
515
- - test/dummy/db/migrate/20150616150629_create_polymorphic_field.rb
516
- - test/dummy/db/migrate/20150609114636_create_belongs_to_class_name_field.rb
517
- - test/dummy/db/migrate/20160628173505_add_timestamps.rb
518
- - test/dummy/db/migrate/20150623115554_create_has_many_class_name_field.rb
519
- - test/dummy/db/schema.rb
520
- - test/dummy/public/404.html
504
+ - test/routing/route_test.rb
505
+ - test/fixtures/tree.yml
506
+ - test/fixtures/has_many_field.yml
507
+ - test/fixtures/serialize_field.yml
508
+ - test/fixtures/owner.yml
509
+ - test/fixtures/reference.yml
510
+ - test/fixtures/string_field.yml
511
+ - test/fixtures/belongs_to_field.yml
512
+ - test/fixtures/has_many_through_field.yml
513
+ - test/fixtures/has_one_field.yml
514
+ - test/test_helper.rb
515
+ - test/services/forest_liana/scope_validator_test.rb
516
+ - test/services/forest_liana/operator_date_interval_parser_test.rb
517
+ - test/services/forest_liana/has_many_getter_test.rb
518
+ - test/services/forest_liana/schema_adapter_test.rb
519
+ - test/services/forest_liana/pie_stat_getter_test.rb
520
+ - test/services/forest_liana/value_stat_getter_test.rb
521
+ - test/services/forest_liana/resource_updater_test.rb
522
+ - test/forest_liana_test.rb
523
+ - test/dummy/bin/bundle
524
+ - test/dummy/bin/setup
525
+ - test/dummy/bin/rake
526
+ - test/dummy/bin/rails
527
+ - test/dummy/config.ru
521
528
  - test/dummy/public/500.html
529
+ - test/dummy/public/404.html
522
530
  - test/dummy/public/422.html
523
531
  - test/dummy/public/favicon.ico
524
- - test/dummy/Rakefile
525
- - test/dummy/app/controllers/application_controller.rb
532
+ - test/dummy/app/assets/stylesheets/application.css
533
+ - test/dummy/app/assets/config/manifest.js
534
+ - test/dummy/app/assets/javascripts/application.js
535
+ - test/dummy/app/helpers/application_helper.rb
536
+ - test/dummy/app/views/layouts/application.html.erb
526
537
  - test/dummy/app/models/has_and_belongs_to_many_field.rb
527
- - test/dummy/app/models/polymorphic_field.rb
528
- - test/dummy/app/models/has_many_field.rb
529
- - test/dummy/app/models/float_field.rb
530
- - test/dummy/app/models/string_field.rb
531
- - test/dummy/app/models/has_one_field.rb
532
- - test/dummy/app/models/reference.rb
533
- - test/dummy/app/models/serialize_field.rb
538
+ - test/dummy/app/models/decimal_field.rb
539
+ - test/dummy/app/models/owner.rb
534
540
  - test/dummy/app/models/boolean_field.rb
541
+ - test/dummy/app/models/has_one_field.rb
542
+ - test/dummy/app/models/has_many_class_name_field.rb
535
543
  - test/dummy/app/models/has_many_through_field.rb
536
- - test/dummy/app/models/belongs_to_class_name_field.rb
537
- - test/dummy/app/models/decimal_field.rb
544
+ - test/dummy/app/models/has_many_field.rb
545
+ - test/dummy/app/models/belongs_to_field.rb
538
546
  - test/dummy/app/models/integer_field.rb
547
+ - test/dummy/app/models/belongs_to_class_name_field.rb
548
+ - test/dummy/app/models/polymorphic_field.rb
549
+ - test/dummy/app/models/serialize_field.rb
539
550
  - test/dummy/app/models/tree.rb
551
+ - test/dummy/app/models/float_field.rb
552
+ - test/dummy/app/models/reference.rb
540
553
  - test/dummy/app/models/date_field.rb
541
- - test/dummy/app/models/belongs_to_field.rb
542
- - test/dummy/app/models/has_many_class_name_field.rb
543
- - test/dummy/app/models/owner.rb
544
- - test/dummy/app/assets/stylesheets/application.css
545
- - test/dummy/app/assets/javascripts/application.js
546
- - test/dummy/app/assets/config/manifest.js
547
- - test/dummy/app/helpers/application_helper.rb
548
- - test/dummy/app/views/layouts/application.html.erb
554
+ - test/dummy/app/models/string_field.rb
555
+ - test/dummy/app/controllers/application_controller.rb
556
+ - test/dummy/db/schema.rb
557
+ - test/dummy/db/migrate/20150623115554_create_has_many_class_name_field.rb
558
+ - test/dummy/db/migrate/20150608130516_create_date_field.rb
559
+ - test/dummy/db/migrate/20150612112520_create_has_and_belongs_to_many_field.rb
560
+ - test/dummy/db/migrate/20150608132621_create_string_field.rb
561
+ - test/dummy/db/migrate/20150616150629_create_polymorphic_field.rb
562
+ - test/dummy/db/migrate/20150608131430_create_integer_field.rb
563
+ - test/dummy/db/migrate/20160627172951_create_tree.rb
564
+ - test/dummy/db/migrate/20160628173505_add_timestamps.rb
565
+ - test/dummy/db/migrate/20150608131610_create_float_field.rb
566
+ - test/dummy/db/migrate/20160627172810_create_owner.rb
567
+ - test/dummy/db/migrate/20150814081918_create_has_many_through_field.rb
568
+ - test/dummy/db/migrate/20150608132159_create_boolean_field.rb
569
+ - test/dummy/db/migrate/20170614141921_create_serialize_field.rb
570
+ - test/dummy/db/migrate/20150608150016_create_has_many_field.rb
571
+ - test/dummy/db/migrate/20150608133038_create_belongs_to_field.rb
572
+ - test/dummy/db/migrate/20150608131603_create_decimal_field.rb
573
+ - test/dummy/db/migrate/20181111162121_create_references_table.rb
574
+ - test/dummy/db/migrate/20150608133044_create_has_one_field.rb
575
+ - test/dummy/db/migrate/20150609114636_create_belongs_to_class_name_field.rb
549
576
  - test/dummy/README.rdoc
550
- - test/dummy/config.ru
551
- - test/dummy/config/environment.rb
552
- - test/dummy/config/secrets.yml
553
- - test/dummy/config/boot.rb
554
- - test/dummy/config/database.yml
555
- - test/dummy/config/routes.rb
556
- - test/dummy/config/application.rb
577
+ - test/dummy/Rakefile
578
+ - test/dummy/config/initializers/inflections.rb
557
579
  - test/dummy/config/initializers/filter_parameter_logging.rb
580
+ - test/dummy/config/initializers/wrap_parameters.rb
558
581
  - test/dummy/config/initializers/mime_types.rb
559
- - test/dummy/config/initializers/session_store.rb
560
- - test/dummy/config/initializers/inflections.rb
561
582
  - test/dummy/config/initializers/assets.rb
562
- - test/dummy/config/initializers/wrap_parameters.rb
563
583
  - test/dummy/config/initializers/backtrace_silencers.rb
584
+ - test/dummy/config/initializers/session_store.rb
564
585
  - test/dummy/config/initializers/cookies_serializer.rb
565
- - test/dummy/config/environments/test.rb
586
+ - test/dummy/config/secrets.yml
587
+ - test/dummy/config/database.yml
588
+ - test/dummy/config/boot.rb
589
+ - test/dummy/config/locales/en.yml
590
+ - test/dummy/config/environment.rb
591
+ - test/dummy/config/application.rb
566
592
  - test/dummy/config/environments/production.rb
567
593
  - test/dummy/config/environments/development.rb
568
- - test/dummy/config/locales/en.yml
569
- - test/dummy/bin/rake
570
- - test/dummy/bin/bundle
571
- - test/dummy/bin/rails
572
- - test/dummy/bin/setup
573
- - test/test_helper.rb
574
- - test/forest_liana_test.rb
575
- - test/services/forest_liana/has_many_getter_test.rb
576
- - test/services/forest_liana/resource_updater_test.rb
577
- - test/services/forest_liana/schema_adapter_test.rb
578
- - test/services/forest_liana/scope_validator_test.rb
579
- - test/services/forest_liana/value_stat_getter_test.rb
580
- - test/services/forest_liana/pie_stat_getter_test.rb
581
- - test/fixtures/owner.yml
582
- - test/fixtures/has_many_through_field.yml
583
- - test/fixtures/reference.yml
584
- - test/fixtures/has_many_field.yml
585
- - test/fixtures/has_one_field.yml
586
- - test/fixtures/belongs_to_field.yml
587
- - test/fixtures/string_field.yml
588
- - test/fixtures/serialize_field.yml
589
- - test/fixtures/tree.yml
590
- - test/routing/route_test.rb
591
- - spec/dummy/db/migrate/20190716135241_add_type_to_user.rb
592
- - spec/dummy/db/migrate/20210326110524_create_references.rb
593
- - spec/dummy/db/migrate/20190226173051_create_isle.rb
594
- - spec/dummy/db/migrate/20190226174951_create_tree.rb
595
- - spec/dummy/db/migrate/20190716130830_add_age_to_tree.rb
596
- - spec/dummy/db/migrate/20190226172951_create_user.rb
597
- - spec/dummy/db/migrate/20210326140855_create_locations.rb
598
- - spec/dummy/db/schema.rb
599
- - spec/dummy/lib/forest_liana/collections/location.rb
600
- - spec/dummy/lib/forest_liana/collections/user.rb
601
- - spec/dummy/Rakefile
602
- - spec/dummy/app/controllers/application_controller.rb
603
- - spec/dummy/app/models/island.rb
604
- - spec/dummy/app/models/reference.rb
605
- - spec/dummy/app/models/location.rb
606
- - spec/dummy/app/models/tree.rb
607
- - spec/dummy/app/models/user.rb
594
+ - test/dummy/config/environments/test.rb
595
+ - test/dummy/config/routes.rb
596
+ - spec/spec_helper.rb
597
+ - spec/rails_helper.rb
598
+ - spec/helpers/forest_liana/is_same_data_structure_helper_spec.rb
599
+ - spec/helpers/forest_liana/schema_helper_spec.rb
600
+ - spec/helpers/forest_liana/query_helper_spec.rb
601
+ - spec/services/forest_liana/permissions_checker_acl_disabled_spec.rb
602
+ - spec/services/forest_liana/resources_getter_spec.rb
603
+ - spec/services/forest_liana/filters_parser_spec.rb
604
+ - spec/services/forest_liana/permissions_getter_spec.rb
605
+ - spec/services/forest_liana/ip_whitelist_checker_spec.rb
606
+ - spec/services/forest_liana/schema_adapter_spec.rb
607
+ - spec/services/forest_liana/permissions_formatter_spec.rb
608
+ - spec/services/forest_liana/permissions_checker_live_queries_spec.rb
609
+ - spec/services/forest_liana/apimap_sorter_spec.rb
610
+ - spec/services/forest_liana/line_stat_getter_spec.rb
611
+ - spec/services/forest_liana/permissions_checker_acl_enabled_spec.rb
612
+ - spec/requests/actions_controller_spec.rb
613
+ - spec/requests/stats_spec.rb
614
+ - spec/requests/authentications_spec.rb
615
+ - spec/requests/resources_spec.rb
616
+ - spec/dummy/bin/bundle
617
+ - spec/dummy/bin/setup
618
+ - spec/dummy/bin/rake
619
+ - spec/dummy/bin/rails
620
+ - spec/dummy/config.ru
608
621
  - spec/dummy/app/assets/stylesheets/application.css
609
- - spec/dummy/app/assets/javascripts/application.js
610
622
  - spec/dummy/app/assets/config/manifest.js
611
- - spec/dummy/app/config/routes.rb
623
+ - spec/dummy/app/assets/javascripts/application.js
612
624
  - spec/dummy/app/helpers/application_helper.rb
613
625
  - spec/dummy/app/views/layouts/application.html.erb
626
+ - spec/dummy/app/models/user.rb
627
+ - spec/dummy/app/models/owner.rb
628
+ - spec/dummy/app/models/island.rb
629
+ - spec/dummy/app/models/location.rb
630
+ - spec/dummy/app/models/tree.rb
631
+ - spec/dummy/app/models/reference.rb
632
+ - spec/dummy/app/config/routes.rb
633
+ - spec/dummy/app/controllers/application_controller.rb
634
+ - spec/dummy/db/schema.rb
635
+ - spec/dummy/db/migrate/20210511141752_create_owners.rb
636
+ - spec/dummy/db/migrate/20190226174951_create_tree.rb
637
+ - spec/dummy/db/migrate/20210326140855_create_locations.rb
638
+ - spec/dummy/db/migrate/20190716130830_add_age_to_tree.rb
639
+ - spec/dummy/db/migrate/20210326110524_create_references.rb
640
+ - spec/dummy/db/migrate/20190716135241_add_type_to_user.rb
641
+ - spec/dummy/db/migrate/20190226173051_create_isle.rb
642
+ - spec/dummy/db/migrate/20190226172951_create_user.rb
643
+ - spec/dummy/lib/forest_liana/collections/user.rb
644
+ - spec/dummy/lib/forest_liana/collections/location.rb
614
645
  - spec/dummy/README.rdoc
615
- - spec/dummy/config.ru
616
- - spec/dummy/config/environment.rb
617
- - spec/dummy/config/secrets.yml
618
- - spec/dummy/config/boot.rb
619
- - spec/dummy/config/database.yml
620
- - spec/dummy/config/routes.rb
621
- - spec/dummy/config/application.rb
646
+ - spec/dummy/Rakefile
647
+ - spec/dummy/config/initializers/inflections.rb
622
648
  - spec/dummy/config/initializers/filter_parameter_logging.rb
623
- - spec/dummy/config/initializers/forest_liana.rb
649
+ - spec/dummy/config/initializers/wrap_parameters.rb
624
650
  - spec/dummy/config/initializers/mime_types.rb
625
- - spec/dummy/config/initializers/session_store.rb
626
- - spec/dummy/config/initializers/inflections.rb
651
+ - spec/dummy/config/initializers/forest_liana.rb
627
652
  - spec/dummy/config/initializers/assets.rb
628
- - spec/dummy/config/initializers/wrap_parameters.rb
629
653
  - spec/dummy/config/initializers/backtrace_silencers.rb
654
+ - spec/dummy/config/initializers/session_store.rb
630
655
  - spec/dummy/config/initializers/cookies_serializer.rb
631
- - spec/dummy/config/environments/test.rb
656
+ - spec/dummy/config/secrets.yml
657
+ - spec/dummy/config/database.yml
658
+ - spec/dummy/config/boot.rb
659
+ - spec/dummy/config/environment.rb
660
+ - spec/dummy/config/application.rb
632
661
  - spec/dummy/config/environments/production.rb
633
662
  - spec/dummy/config/environments/development.rb
634
- - spec/dummy/bin/rake
635
- - spec/dummy/bin/bundle
636
- - spec/dummy/bin/rails
637
- - spec/dummy/bin/setup
638
- - spec/services/forest_liana/permissions_checker_acl_disabled_spec.rb
639
- - spec/services/forest_liana/resources_getter_spec.rb
640
- - spec/services/forest_liana/permissions_formatter_spec.rb
641
- - spec/services/forest_liana/permissions_checker_live_queries_spec.rb
642
- - spec/services/forest_liana/permissions_getter_spec.rb
643
- - spec/services/forest_liana/schema_adapter_spec.rb
644
- - spec/services/forest_liana/apimap_sorter_spec.rb
645
- - spec/services/forest_liana/permissions_checker_acl_enabled_spec.rb
646
- - spec/services/forest_liana/ip_whitelist_checker_spec.rb
647
- - spec/services/forest_liana/filters_parser_spec.rb
648
- - spec/rails_helper.rb
649
- - spec/requests/resources_spec.rb
650
- - spec/requests/authentications_spec.rb
651
- - spec/requests/actions_controller_spec.rb
652
- - spec/requests/stats_spec.rb
653
- - spec/helpers/forest_liana/is_same_data_structure_helper_spec.rb
654
- - spec/helpers/forest_liana/schema_helper_spec.rb
655
- - spec/helpers/forest_liana/query_helper_spec.rb
656
- - spec/spec_helper.rb
663
+ - spec/dummy/config/environments/test.rb
664
+ - spec/dummy/config/routes.rb