forest_liana 7.0.0.beta.6 → 7.1.0

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: 0ebb1311a034cd61b964ed27bc2f3a515c6f3e8079b588a66f06ad9294c8e297
4
- data.tar.gz: 9481f8aa066b3f9c852811f182bc593bd6ab884048e3faa3e339a662af2f205a
3
+ metadata.gz: 2d1f8dd9712b1680c09fe50b0bb37c3b3253f9f2fb1f95fd212cc3aeb4208337
4
+ data.tar.gz: 5463523fd881339c91c9fbc1bb9995c77106c2d42cadbd4e63364eed697a38ff
5
5
  SHA512:
6
- metadata.gz: bf40fea541629a9ded642a65c160560787a6f8a3854525dff31d0ebd638f2741db5bfe4d39cf09bfaf277f0bc61872f5199ae44e1c3fd46b2f5b069eb30d90c2
7
- data.tar.gz: 34201435085c8d5b1caf06727d5c4b62cbaeefe4e9fd21a1fbb89e619cbf7bdb3085f36d0dd6653dd8ea9c89666df2e1df3e28fb0aba2ce1aed2a81093ce27f4
6
+ metadata.gz: 6a94dcad31928fe27b2703d10fb68d21904793e4a7ba51911403c6b5c5a9102f3face90de8f55fb5c8e349a76e10169515d5aee1670de0b73165263124b9aaa2
7
+ data.tar.gz: 35df0353fea6972f8bc8dea7b5ba3e500ee130f5a5c68be2c106578a70e823c05640585e833c326de51767e7a5dd2a629369b1100ea62aca464e6a033edf21a0
@@ -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
@@ -20,6 +20,7 @@ module ForestLiana
20
20
  last_name: user['last_name'],
21
21
  team: user['teams'][0],
22
22
  role: user['role'],
23
+ tags: user['tags'],
23
24
  rendering_id: rendering_id,
24
25
  exp: expiration_in_seconds()
25
26
  }, ForestLiana.auth_secret, 'HS256')
@@ -1,3 +1,3 @@
1
1
  module ForestLiana
2
- VERSION = "7.0.0.beta.6"
2
+ VERSION = "7.1.0"
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
@@ -45,7 +45,7 @@ describe "Authentications", type: :request do
45
45
 
46
46
  describe "GET /authentication/callback" do
47
47
  before() do
48
- response = '{"data":{"id":666,"attributes":{"first_name":"Alice","last_name":"Doe","email":"alice@forestadmin.com","teams":[1,2,3],"role":"Test"}}}'
48
+ response = '{"data":{"id":666,"attributes":{"first_name":"Alice","last_name":"Doe","email":"alice@forestadmin.com","teams":[1,2,3],"role":"Test","tags":[{"key":"city","value":"Paris"}]}}}'
49
49
  allow(ForestLiana::ForestApiRequester).to receive(:get).with(
50
50
  "/liana/v2/renderings/42/authorization", { :headers => { "forest-token" => "THE-ACCESS-TOKEN" }, :query=> {} }
51
51
  ).and_return(
@@ -76,6 +76,10 @@ describe "Authentications", type: :request do
76
76
  }
77
77
 
78
78
  expect(decoded).to include(expected_token_data)
79
+ tags = decoded['tags']
80
+ expect(tags.length).to eq(1)
81
+ expect(tags[0]['key']).to eq("city")
82
+ expect(tags[0]['value']).to eq("Paris")
79
83
  expect(body).to eq({ token: token, tokenData: decoded.deep_symbolize_keys! })
80
84
  expect(response).to have_http_status(200)
81
85
  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.6
4
+ version: 7.1.0
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-20 00:00:00.000000000 Z
11
+ date: 2021-08-25 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