forest_liana 2.8.3 → 2.8.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
  SHA1:
3
- metadata.gz: 3f8a110de97c7549661abca45b0a64d007761f81
4
- data.tar.gz: e4f6330c222dde8972c7a265c550b846589e990b
3
+ metadata.gz: 2f5ff503b76f35295dddf27be65927752562cb6d
4
+ data.tar.gz: b69bb68467dfa6614e0074853f05717b32fc1b3d
5
5
  SHA512:
6
- metadata.gz: 4873a75514f82752ea362470f7d28424b97b2ced4ef140d19970fed6fb959198a90f3ea88e86c1605ec1fd33a900277eff5b10dbc93ab231c3f51ecbd38b4372
7
- data.tar.gz: df50c529a44f907d9414b713419cb2495216b18551494ad665d0c00e10872c23a867dd4b9d11c4afe6ebac68ce075484c08bae73bce4a0924593ad52838329cf
6
+ metadata.gz: 4e7df3829c5a0081d7239584c36319a2ba7632771703d5ece7c243d19ef2b2924c4dc13107704e4edac82db6f2b80e5a6be9cde4a087a7e397f073f06bbdb413
7
+ data.tar.gz: 1e75a9ff7077f65c1ae3ea0723b299f778a278d65edc2bdc9d26e60831f6331ca7f7fe0398bfea0224dc43a082e9c82985f32b39fddd9270602288f8430d0a8a
@@ -68,6 +68,7 @@ module ForestLiana
68
68
 
69
69
  @jwt_decoded_token = JWT.decode(token, ForestLiana.auth_secret, true,
70
70
  { algorithm: 'HS256', leeway: 30 }).try(:first)
71
+ @rendering_id = @jwt_decoded_token['data']['relationships']['renderings']['data'][0]['id']
71
72
  else
72
73
  head :unauthorized
73
74
  end
@@ -16,11 +16,14 @@ module ForestLiana
16
16
  def index
17
17
  begin
18
18
  if request.format == 'csv'
19
- return head :forbidden unless ForestLiana::PermissionsChecker.new(@resource, 'export').is_authorized?
19
+ checker = ForestLiana::PermissionsChecker.new(@resource, 'export', @rendering_id)
20
+ return head :forbidden unless checker.is_authorized?
20
21
  elsif params.has_key?(:searchToEdit)
21
- return head :forbidden unless ForestLiana::PermissionsChecker.new(@resource, 'searchToEdit').is_authorized?
22
+ checker = ForestLiana::PermissionsChecker.new(@resource, 'searchToEdit', @rendering_id)
23
+ return head :forbidden unless checker.is_authorized?
22
24
  else
23
- return head :forbidden unless ForestLiana::PermissionsChecker.new(@resource, 'list').is_authorized?
25
+ checker = ForestLiana::PermissionsChecker.new(@resource, 'list', @rendering_id)
26
+ return head :forbidden unless checker.is_authorized?
24
27
  end
25
28
 
26
29
  getter = ForestLiana::ResourcesGetter.new(@resource, params)
@@ -41,7 +44,8 @@ module ForestLiana
41
44
 
42
45
  def show
43
46
  begin
44
- return head :forbidden unless ForestLiana::PermissionsChecker.new(@resource, 'show').is_authorized?
47
+ checker = ForestLiana::PermissionsChecker.new(@resource, 'show', @rendering_id)
48
+ return head :forbidden unless checker.is_authorized?
45
49
 
46
50
  getter = ForestLiana::ResourceGetter.new(@resource, params)
47
51
  getter.perform
@@ -56,7 +60,8 @@ module ForestLiana
56
60
 
57
61
  def create
58
62
  begin
59
- return head :forbidden unless ForestLiana::PermissionsChecker.new(@resource, 'create').is_authorized?
63
+ checker = ForestLiana::PermissionsChecker.new(@resource, 'create', @rendering_id)
64
+ return head :forbidden unless checker.is_authorized?
60
65
 
61
66
  creator = ForestLiana::ResourceCreator.new(@resource, params)
62
67
  creator.perform
@@ -79,7 +84,8 @@ module ForestLiana
79
84
 
80
85
  def update
81
86
  begin
82
- return head :forbidden unless ForestLiana::PermissionsChecker.new(@resource, 'update').is_authorized?
87
+ checker = ForestLiana::PermissionsChecker.new(@resource, 'update', @rendering_id)
88
+ return head :forbidden unless checker.is_authorized?
83
89
 
84
90
  updater = ForestLiana::ResourceUpdater.new(@resource, params)
85
91
  updater.perform
@@ -102,7 +108,8 @@ module ForestLiana
102
108
 
103
109
  def destroy
104
110
  begin
105
- return head :forbidden unless ForestLiana::PermissionsChecker.new(@resource, 'delete').is_authorized?
111
+ checker = ForestLiana::PermissionsChecker.new(@resource, 'delete', @rendering_id)
112
+ return head :forbidden unless checker.is_authorized?
106
113
 
107
114
  @resource.destroy(params[:id])
108
115
  head :no_content
@@ -1,11 +1,12 @@
1
1
  module ForestLiana
2
2
  class ForestApiRequester
3
- def perform_request
3
+ def perform_request(query_parameters = nil)
4
4
  http = Net::HTTP.new(@uri.host, @uri.port)
5
5
  http.use_ssl = true if forest_api_url.start_with?('https')
6
6
 
7
7
  http.start do |client|
8
- request = Net::HTTP::Get.new(@uri.path)
8
+ path = get_path(query_parameters)
9
+ request = Net::HTTP::Get.new(path)
9
10
  request['Content-Type'] = 'application/json'
10
11
  request['forest-secret-key'] = ForestLiana.env_secret
11
12
  request['forest-token'] = @forest_token if @forest_token
@@ -18,5 +19,15 @@ module ForestLiana
18
19
  def forest_api_url
19
20
  ENV['FOREST_URL'] || 'https://api.forestadmin.com';
20
21
  end
22
+
23
+ def get_path(query_parameters)
24
+ route = @uri.path
25
+ unless query_parameters.nil?
26
+ query = query_parameters
27
+ .collect { |parameter, value| "#{parameter}=#{CGI::escape(value.to_s)}" }.join('&')
28
+ route += "?#{query}"
29
+ end
30
+ route
31
+ end
21
32
  end
22
33
  end
@@ -1,12 +1,12 @@
1
1
  module ForestLiana
2
2
  class PermissionsChecker
3
- @@permissions = nil
4
- @@last_retrieve = nil
3
+ @@permissions_per_rendering = Hash.new
5
4
  @@expiration_in_seconds = (ENV['FOREST_PERMISSIONS_EXPIRATION_IN_SECONDS'] || 3600).to_i
6
5
 
7
- def initialize(resource, permission_name)
6
+ def initialize(resource, permission_name, rendering_id)
8
7
  @collection_name = ForestLiana.name_for(resource)
9
8
  @permission_name = permission_name
9
+ @rendering_id = rendering_id
10
10
  end
11
11
 
12
12
  def is_authorized?
@@ -15,18 +15,34 @@ module ForestLiana
15
15
 
16
16
  private
17
17
 
18
+ def get_permissions
19
+ @@permissions_per_rendering &&
20
+ @@permissions_per_rendering[@rendering_id] &&
21
+ @@permissions_per_rendering[@rendering_id]['data']
22
+ end
23
+
24
+ def get_last_retrieve
25
+ @@permissions_per_rendering &&
26
+ @@permissions_per_rendering[@rendering_id] &&
27
+ @@permissions_per_rendering[@rendering_id]['last_retrieve']
28
+ end
29
+
18
30
  def is_allowed?
19
- if @@permissions && @@permissions[@collection_name] &&
20
- @@permissions[@collection_name]['collection']
21
- @@permissions[@collection_name]['collection'][@permission_name]
31
+ permissions = get_permissions
32
+
33
+ if permissions && permissions[@collection_name] &&
34
+ permissions[@collection_name]['collection']
35
+ permissions[@collection_name]['collection'][@permission_name]
22
36
  else
23
37
  false
24
38
  end
25
39
  end
26
40
 
27
41
  def retrieve_permissions
28
- @@permissions = PermissionsGetter.new.perform
29
- @@last_retrieve = Time.now
42
+ @@permissions_per_rendering[@rendering_id] = Hash.new
43
+ @@permissions_per_rendering[@rendering_id]['data'] =
44
+ ForestLiana::PermissionsGetter.new(@rendering_id).perform()
45
+ @@permissions_per_rendering[@rendering_id]['last_retrieve'] = Time.now
30
46
  end
31
47
 
32
48
  def date_difference_in_seconds(date1, date2)
@@ -34,9 +50,11 @@ module ForestLiana
34
50
  end
35
51
 
36
52
  def is_permission_expired?
37
- return true if @@last_retrieve.nil?
53
+ last_retrieve = get_last_retrieve
54
+
55
+ return true if last_retrieve.nil?
38
56
 
39
- elapsed_seconds = date_difference_in_seconds(Time.now, @@last_retrieve)
57
+ elapsed_seconds = date_difference_in_seconds(Time.now, last_retrieve)
40
58
  elapsed_seconds >= @@expiration_in_seconds
41
59
  end
42
60
 
@@ -1,11 +1,12 @@
1
1
  module ForestLiana
2
2
  class PermissionsGetter < ForestApiRequester
3
- def initialize
4
- @uri = URI.parse("#{forest_api_url}/liana/v1/permissions")
3
+ def initialize(rendering_id)
4
+ @uri = URI.parse("#{forest_api_url}/liana/v2/permissions")
5
+ @rendering_id = rendering_id
5
6
  end
6
7
 
7
8
  def perform
8
- perform_request
9
+ perform_request({ 'renderingId' => @rendering_id })
9
10
  rescue => exception
10
11
  FOREST_LOGGER.error "Cannot retrieve the permissions for the project you\'re trying to unlock. Forest API seems to be down right now."
11
12
  FOREST_LOGGER.error exception
@@ -1,3 +1,3 @@
1
1
  module ForestLiana
2
- VERSION = "2.8.3"
2
+ VERSION = "2.8.4"
3
3
  end
@@ -8,7 +8,9 @@ module ForestLiana
8
8
 
9
9
  def install
10
10
  if ForestLiana.env_secret.present?
11
- puts "\nForest liana already installed on this app (environment secret: #{ForestLiana.env_secret})"
11
+ puts "\nForest liana already installed on this app.\nHere is your current environment " +
12
+ "secret: #{ForestLiana.env_secret}\nYou can update the config/secrets.yml file with the " +
13
+ "new environment secret: #{env_secret}"
12
14
  return
13
15
  end
14
16
 
Binary file
@@ -23531,3 +23531,448 @@ ForestLianaTest: test_truth
23531
23531
  ForestLiana::RouteTest: test_Routes
23532
23532
  -----------------------------------
23533
23533
   (0.2ms) rollback transaction
23534
+ ActiveRecord::SchemaMigration Load (0.6ms) SELECT "schema_migrations".* FROM "schema_migrations"
23535
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
23536
+  (0.1ms)  SELECT sql
23537
+ FROM sqlite_master
23538
+ WHERE name='index_belongs_to_class_name_fields_on_foo_id' AND type='index'
23539
+ UNION ALL
23540
+ SELECT sql
23541
+ FROM sqlite_temp_master
23542
+ WHERE name='index_belongs_to_class_name_fields_on_foo_id' AND type='index'
23543
+ 
23544
+  (0.1ms) SELECT sql
23545
+ FROM sqlite_master
23546
+ WHERE name='index_belongs_to_fields_on_has_many_field_id' AND type='index'
23547
+ UNION ALL
23548
+ SELECT sql
23549
+ FROM sqlite_temp_master
23550
+ WHERE name='index_belongs_to_fields_on_has_many_field_id' AND type='index'
23551
+
23552
+  (0.1ms)  SELECT sql
23553
+ FROM sqlite_master
23554
+ WHERE name='index_belongs_to_fields_on_has_many_class_name_field_id' AND type='index'
23555
+ UNION ALL
23556
+ SELECT sql
23557
+ FROM sqlite_temp_master
23558
+ WHERE name='index_belongs_to_fields_on_has_many_class_name_field_id' AND type='index'
23559
+ 
23560
+  (0.1ms) SELECT sql
23561
+ FROM sqlite_master
23562
+ WHERE name='index_belongs_to_fields_on_has_one_field_id' AND type='index'
23563
+ UNION ALL
23564
+ SELECT sql
23565
+ FROM sqlite_temp_master
23566
+ WHERE name='index_belongs_to_fields_on_has_one_field_id' AND type='index'
23567
+
23568
+  (0.1ms)  SELECT sql
23569
+ FROM sqlite_master
23570
+ WHERE name='index_has_many_fields_on_has_many_through_field_id' AND type='index'
23571
+ UNION ALL
23572
+ SELECT sql
23573
+ FROM sqlite_temp_master
23574
+ WHERE name='index_has_many_fields_on_has_many_through_field_id' AND type='index'
23575
+ 
23576
+  (0.2ms) SELECT sql
23577
+ FROM sqlite_master
23578
+ WHERE name='index_polymorphic_fields_on_has_one_field_id' AND type='index'
23579
+ UNION ALL
23580
+ SELECT sql
23581
+ FROM sqlite_temp_master
23582
+ WHERE name='index_polymorphic_fields_on_has_one_field_id' AND type='index'
23583
+
23584
+  (0.1ms)  SELECT sql
23585
+ FROM sqlite_master
23586
+ WHERE name='index_trees_on_owner_id' AND type='index'
23587
+ UNION ALL
23588
+ SELECT sql
23589
+ FROM sqlite_temp_master
23590
+ WHERE name='index_trees_on_owner_id' AND type='index'
23591
+ 
23592
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
23593
+  (0.1ms) begin transaction
23594
+ Fixture Delete (0.6ms) DELETE FROM "has_many_through_fields"
23595
+ Fixture Insert (0.4ms) INSERT INTO "has_many_through_fields" ("id") VALUES (1)
23596
+ Fixture Insert (0.3ms) INSERT INTO "has_many_through_fields" ("id") VALUES (2)
23597
+ Fixture Insert (0.1ms) INSERT INTO "has_many_through_fields" ("id") VALUES (3)
23598
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (4)
23599
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (5)
23600
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (6)
23601
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (7)
23602
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (8)
23603
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (9)
23604
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (10)
23605
+ Fixture Delete (0.4ms) DELETE FROM "string_fields"
23606
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (1, 'Test 1')
23607
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (2, 'Test 2')
23608
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (3, 'Test 3')
23609
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (4, 'Test 4')
23610
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (5, 'Test 5')
23611
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (6, 'Test 6')
23612
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (7, 'Test 7')
23613
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (8, 'Test 8')
23614
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (9, 'Test 9')
23615
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (10, 'Test 10')
23616
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (11, 'Test 11')
23617
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (12, 'Test 12')
23618
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (13, 'Test 13')
23619
+ Fixture Insert (0.2ms) INSERT INTO "string_fields" ("id", "field") VALUES (14, 'Test 14')
23620
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (15, 'Test 15')
23621
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (16, 'Test 16')
23622
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (17, 'Test 17')
23623
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (18, 'Test 18')
23624
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (19, 'Test 19')
23625
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (20, 'Test 20')
23626
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (21, 'Test 21')
23627
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (22, 'Test 22')
23628
+ Fixture Insert (0.1ms) INSERT INTO "string_fields" ("id", "field") VALUES (23, 'Test 23')
23629
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (24, 'Test 24')
23630
+ Fixture Insert (0.1ms) INSERT INTO "string_fields" ("id", "field") VALUES (25, 'Test 25')
23631
+ Fixture Insert (0.1ms) INSERT INTO "string_fields" ("id", "field") VALUES (26, 'Test 26')
23632
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (27, 'Test 27')
23633
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (28, 'Test 28')
23634
+ Fixture Insert (0.1ms) INSERT INTO "string_fields" ("id", "field") VALUES (29, 'Test 29')
23635
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (30, 'Test 30')
23636
+ Fixture Delete (0.9ms) DELETE FROM "belongs_to_fields"
23637
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (1, 1, 1)
23638
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (2, 2, 1)
23639
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (3, 3, 1)
23640
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (4, 4, 2)
23641
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (5, 5, 2)
23642
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (6, 6, 2)
23643
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (7, 7, 3)
23644
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (8, 8, 3)
23645
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (9, 9, 3)
23646
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (10, 10, 4)
23647
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (11, 11, 4)
23648
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (12, 12, 4)
23649
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (13, 13, 5)
23650
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (14, 14, 5)
23651
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (15, 15, 5)
23652
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (16, 16, 6)
23653
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (17, 17, 6)
23654
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (18, 18, 6)
23655
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (19, 19, 7)
23656
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (20, 20, 7)
23657
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (21, 21, 7)
23658
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (22, 22, 7)
23659
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (23, 23, 8)
23660
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (24, 24, 8)
23661
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (25, 25, 9)
23662
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (26, 26, 9)
23663
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (27, 27, 9)
23664
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (28, 28, 10)
23665
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (29, 29, 10)
23666
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (30, 30, 10)
23667
+ Fixture Delete (0.7ms) DELETE FROM "trees"
23668
+ Fixture Insert (0.1ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (1, 'Oak', 1, '2011-02-11 11:00:00.000000', '2011-02-11 11:00:00.000000')
23669
+ Fixture Insert (0.0ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (2, 'Mapple', 2, '2011-02-15 21:00:00.000000', '2011-02-15 21:00:00.000000')
23670
+ Fixture Insert (0.0ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (3, 'Mapple', 2, '2013-04-11 12:00:00.000000', '2013-04-11 12:00:00.000000')
23671
+ Fixture Insert (0.0ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (4, 'Oak', 2, '2016-06-18 09:00:00.000000', '2016-06-18 09:00:00.000000')
23672
+ Fixture Insert (0.0ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (5, 'Oak', 3, '2015-06-18 09:00:00.000000', '2015-06-18 09:00:00.000000')
23673
+ Fixture Insert (0.1ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (6, 'Oak', 3, '2018-06-21 21:18:21.000000', '2018-06-21 21:18:21.000000')
23674
+ Fixture Insert (0.0ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (7, 'Sequoia', 1, '2018-06-21 21:18:21.000000', '2018-06-21 21:18:21.000000')
23675
+ Fixture Insert (0.0ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (8, 'Fir', 1, '2018-06-21 21:18:21.000000', '2018-06-21 21:18:21.000000')
23676
+ Fixture Delete (0.4ms) DELETE FROM "has_one_fields"
23677
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (1, 't', 0)
23678
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (2, 't', 0)
23679
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (3, 't', 0)
23680
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (4, 't', 0)
23681
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (5, 't', 0)
23682
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (6, 't', 0)
23683
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (7, 't', 0)
23684
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (8, 't', 0)
23685
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (9, 't', 0)
23686
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (10, 't', 0)
23687
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (11, 't', 0)
23688
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (12, 't', 0)
23689
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (13, 't', 0)
23690
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (14, 't', 0)
23691
+ Fixture Insert (7.9ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (15, 't', 0)
23692
+ Fixture Insert (0.2ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (16, 't', 0)
23693
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (17, 't', 0)
23694
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (18, 't', 0)
23695
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (19, 't', 0)
23696
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (20, 't', 0)
23697
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (21, 't', 0)
23698
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (22, 't', 0)
23699
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (23, 't', 0)
23700
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (24, 't', 0)
23701
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (25, 't', 0)
23702
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (26, 't', 0)
23703
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (27, 't', 0)
23704
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (28, 't', 0)
23705
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (29, 't', 0)
23706
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (30, 't', 1)
23707
+ Fixture Delete (0.3ms) DELETE FROM "owners"
23708
+ Fixture Insert (0.1ms) INSERT INTO "owners" ("id", "name", "created_at", "updated_at") VALUES (1, 'Sandro Munda', '2017-05-30 09:00:00.000000', '2018-06-27 20:00:00.000000')
23709
+ Fixture Insert (0.0ms) INSERT INTO "owners" ("id", "name", "created_at", "updated_at") VALUES (2, 'Arnaud Besnier', '2018-05-02 09:00:00.000000', '2018-06-28 08:00:00.000000')
23710
+ Fixture Insert (0.1ms) INSERT INTO "owners" ("id", "name", "created_at", "updated_at") VALUES (3, 'John Doe', '2016-05-02 09:00:00.000000', '2017-06-28 08:00:00.000000')
23711
+ Fixture Delete (1.1ms) DELETE FROM "has_many_fields"
23712
+ Fixture Insert (0.1ms) INSERT INTO "has_many_fields" ("id") VALUES (1)
23713
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (2)
23714
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (3)
23715
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (4)
23716
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id", "has_many_through_field_id") VALUES (5, 3)
23717
+ Fixture Insert (0.1ms) INSERT INTO "has_many_fields" ("id", "has_many_through_field_id") VALUES (6, 2)
23718
+ Fixture Insert (0.3ms) INSERT INTO "has_many_fields" ("id") VALUES (7)
23719
+ Fixture Insert (0.1ms) INSERT INTO "has_many_fields" ("id", "has_many_through_field_id") VALUES (8, 2)
23720
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (9)
23721
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (10)
23722
+ Fixture Delete (0.1ms) DELETE FROM "serialize_fields"
23723
+ Fixture Insert (0.0ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (1, 'value 1')
23724
+ Fixture Insert (0.0ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (2, 'value 2')
23725
+ Fixture Insert (0.0ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (3, 'value 3')
23726
+ Fixture Insert (0.0ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (4, 'value 4')
23727
+ Fixture Insert (0.0ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (5, 'value 5')
23728
+  (2.0ms) commit transaction
23729
+  (0.1ms) begin transaction
23730
+ -----------------------------------------------------------------------
23731
+ ForestLiana::HasManyGetterTest: test_HasMany_Getter_with_sort_parameter
23732
+ -----------------------------------------------------------------------
23733
+ Owner Load (0.2ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ? LIMIT 1 [["id", 1]]
23734
+  (0.2ms) SELECT COUNT(DISTINCT "trees"."id") FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? [["owner_id", 1]]
23735
+  (0.2ms) SELECT COUNT(DISTINCT count_column) FROM (SELECT "trees"."id" AS count_column FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? LIMIT 15 OFFSET 0) subquery_for_count [["owner_id", 1]]
23736
+ SQL (0.1ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? ORDER BY trees.id DESC LIMIT 1 OFFSET 0 [["owner_id", 1]]
23737
+  (0.1ms) rollback transaction
23738
+  (0.0ms) begin transaction
23739
+ ------------------------------------------------------------------
23740
+ ForestLiana::HasManyGetterTest: test_HasMany_Getter_page_1_size_15
23741
+ ------------------------------------------------------------------
23742
+ Owner Load (0.1ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ? LIMIT 1 [["id", 1]]
23743
+  (0.1ms) SELECT COUNT(DISTINCT "trees"."id") FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? [["owner_id", 1]]
23744
+  (0.1ms) SELECT COUNT(DISTINCT count_column) FROM (SELECT "trees"."id" AS count_column FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? LIMIT 15 OFFSET 0) subquery_for_count [["owner_id", 1]]
23745
+ SQL (0.1ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? ORDER BY "trees"."id" ASC LIMIT 1 OFFSET 0 [["owner_id", 1]]
23746
+  (0.0ms) rollback transaction
23747
+  (0.0ms) begin transaction
23748
+ -------------------------------------------------------------------------
23749
+ ForestLiana::HasManyGetterTest: test_HasMany_Getter_with_search_parameter
23750
+ -------------------------------------------------------------------------
23751
+ Owner Load (0.1ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ? LIMIT 1 [["id", 1]]
23752
+  (0.1ms) SELECT COUNT(DISTINCT "trees"."id") FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? AND (LOWER("trees"."name") LIKE '%fir%') [["owner_id", 1]]
23753
+  (0.1ms) SELECT COUNT(DISTINCT count_column) FROM (SELECT "trees"."id" AS count_column FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? AND (LOWER("trees"."name") LIKE '%fir%') LIMIT 15 OFFSET 0) subquery_for_count [["owner_id", 1]]
23754
+ SQL (0.5ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? AND (LOWER("trees"."name") LIKE '%fir%') ORDER BY "trees"."id" ASC LIMIT 1 OFFSET 0 [["owner_id", 1]]
23755
+  (0.1ms) rollback transaction
23756
+  (0.1ms) begin transaction
23757
+ ---------------------------------------------------------------------------------------------------------
23758
+ ForestLiana::ResourceUpdaterTest: test_Update_a_record_on_a_"serialize"_attribute_with_a_bad_format_value
23759
+ ---------------------------------------------------------------------------------------------------------
23760
+ SerializeField Load (0.1ms) SELECT "serialize_fields".* FROM "serialize_fields" WHERE "serialize_fields"."id" = ? LIMIT 1 [["id", 1]]
23761
+  (0.1ms) rollback transaction
23762
+  (0.0ms) begin transaction
23763
+ ---------------------------------------------------------------------------------------------------
23764
+ ForestLiana::ResourceUpdaterTest: test_Update_a_record_on_a_"serialize"_attribute_with_a_null_value
23765
+ ---------------------------------------------------------------------------------------------------
23766
+ SerializeField Load (0.1ms) SELECT "serialize_fields".* FROM "serialize_fields" WHERE "serialize_fields"."id" = ? LIMIT 1 [["id", 1]]
23767
+  (0.0ms) SAVEPOINT active_record_1
23768
+ SQL (0.3ms) UPDATE "serialize_fields" SET "field" = ? WHERE "serialize_fields"."id" = ? [["field", nil], ["id", 1]]
23769
+  (0.0ms) RELEASE SAVEPOINT active_record_1
23770
+  (1.7ms) rollback transaction
23771
+  (0.0ms) begin transaction
23772
+ ------------------------------------------------------------------------------------------------------
23773
+ ForestLiana::ResourceUpdaterTest: test_Update_a_record_on_a_"serialize"_attribute_with_a_missing_value
23774
+ ------------------------------------------------------------------------------------------------------
23775
+ SerializeField Load (0.1ms) SELECT "serialize_fields".* FROM "serialize_fields" WHERE "serialize_fields"."id" = ? LIMIT 1 [["id", 1]]
23776
+  (0.1ms) SAVEPOINT active_record_1
23777
+  (0.1ms) RELEASE SAVEPOINT active_record_1
23778
+  (0.1ms) rollback transaction
23779
+  (0.1ms) begin transaction
23780
+ ------------------------------------------------------------------------------------------------------------
23781
+ ForestLiana::ResourceUpdaterTest: test_Update_a_record_on_a_"serialize"_attribute_with_a_well_formated_value
23782
+ ------------------------------------------------------------------------------------------------------------
23783
+ SerializeField Load (0.1ms) SELECT "serialize_fields".* FROM "serialize_fields" WHERE "serialize_fields"."id" = ? LIMIT 1 [["id", 1]]
23784
+  (0.0ms) SAVEPOINT active_record_1
23785
+ SQL (0.3ms) UPDATE "serialize_fields" SET "field" = ? WHERE "serialize_fields"."id" = ? [["field", "---\n- test\n- test\n"], ["id", 1]]
23786
+  (0.1ms) RELEASE SAVEPOINT active_record_1
23787
+  (2.4ms) rollback transaction
23788
+  (0.1ms) begin transaction
23789
+ ----------------------------------------------------------
23790
+ ForestLiana::ResourcesGetterTest: test_Filter_after_x_days
23791
+ ----------------------------------------------------------
23792
+ SQL (0.3ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4 FROM "trees" WHERE ("trees"."created_at" > '2018-06-21 21:17:22 UTC') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
23793
+  (0.1ms) SELECT COUNT(*) FROM "trees" WHERE ("trees"."created_at" > '2018-06-21 21:17:22 UTC')
23794
+  (0.0ms) rollback transaction
23795
+  (0.0ms) begin transaction
23796
+ ------------------------------------------------------------------------------------------------------
23797
+ ForestLiana::ResourcesGetterTest: test_Filter_equal_on_an_updated_at_field_of_an_associated_collection
23798
+ ------------------------------------------------------------------------------------------------------
23799
+ SQL (0.2ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE (owners.updated_at = 'Sat Jul 02 2016 11:52:00 GMT-0400 (EDT)') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
23800
+  (0.1ms) SELECT COUNT(DISTINCT "trees"."id") FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE (owners.updated_at = 'Sat Jul 02 2016 11:52:00 GMT-0400 (EDT)')
23801
+  (0.0ms) rollback transaction
23802
+  (0.1ms) begin transaction
23803
+ -------------------------------------------------------------------------------------------
23804
+ ForestLiana::ResourcesGetterTest: test_Filter_on_an_updated_at_field_of_the_main_collection
23805
+ -------------------------------------------------------------------------------------------
23806
+ SQL (0.2ms) SELECT "owners"."id" AS t0_r0, "owners"."name" AS t0_r1, "owners"."created_at" AS t0_r2, "owners"."updated_at" AS t0_r3 FROM "owners" WHERE ("owners"."updated_at" BETWEEN '2017-01-01 08:00:00 UTC' AND '2018-01-01 07:59:59 UTC') ORDER BY owners.created_at DESC LIMIT 10 OFFSET 0
23807
+  (0.1ms) SELECT COUNT(*) FROM "owners" WHERE ("owners"."updated_at" BETWEEN '2017-01-01 08:00:00 UTC' AND '2018-01-01 07:59:59 UTC')
23808
+  (0.1ms) rollback transaction
23809
+  (0.0ms) begin transaction
23810
+ -----------------------------------------------------------------------
23811
+ ForestLiana::ResourcesGetterTest: test_Sort_by_a_belongs_to_association
23812
+ -----------------------------------------------------------------------
23813
+ SQL (0.3ms) SELECT "belongs_to_fields"."id" AS t0_r0, "belongs_to_fields"."has_one_field_id" AS t0_r1, "belongs_to_fields"."has_many_class_name_field_id" AS t0_r2, "belongs_to_fields"."has_many_field_id" AS t0_r3, "has_one_fields"."id" AS t1_r0, "has_one_fields"."checked" AS t1_r1, "has_one_fields"."status" AS t1_r2, "has_many_fields"."id" AS t2_r0, "has_many_fields"."has_many_through_field_id" AS t2_r1, "has_many_class_name_fields"."id" AS t3_r0 FROM "belongs_to_fields" LEFT OUTER JOIN "has_one_fields" ON "has_one_fields"."id" = "belongs_to_fields"."has_one_field_id" LEFT OUTER JOIN "has_many_fields" ON "has_many_fields"."id" = "belongs_to_fields"."has_many_field_id" LEFT OUTER JOIN "has_many_class_name_fields" ON "has_many_class_name_fields"."id" = "belongs_to_fields"."has_many_class_name_field_id" ORDER BY "has_one_fields"."id" ASC LIMIT 10 OFFSET 0
23814
+  (0.1ms) SELECT COUNT(*) FROM "belongs_to_fields"
23815
+  (0.1ms) rollback transaction
23816
+  (0.0ms) begin transaction
23817
+ --------------------------------------------------------------------
23818
+ ForestLiana::ResourcesGetterTest: test_Sort_by_a_has_one_association
23819
+ --------------------------------------------------------------------
23820
+ SQL (0.5ms) SELECT "has_one_fields"."id" AS t0_r0, "has_one_fields"."checked" AS t0_r1, "has_one_fields"."status" AS t0_r2, "belongs_to_fields"."id" AS t1_r0, "belongs_to_fields"."has_one_field_id" AS t1_r1, "belongs_to_fields"."has_many_class_name_field_id" AS t1_r2, "belongs_to_fields"."has_many_field_id" AS t1_r3, "belongs_to_class_name_fields"."id" AS t2_r0, "belongs_to_class_name_fields"."foo_id" AS t2_r1 FROM "has_one_fields" LEFT OUTER JOIN "belongs_to_fields" ON "belongs_to_fields"."has_one_field_id" = "has_one_fields"."id" LEFT OUTER JOIN "belongs_to_class_name_fields" ON "belongs_to_class_name_fields"."foo_id" = "has_one_fields"."id" ORDER BY "belongs_to_fields"."id" DESC LIMIT 10 OFFSET 0
23821
+  (0.1ms) SELECT COUNT(*) FROM "has_one_fields"
23822
+  (0.0ms) rollback transaction
23823
+  (0.0ms) begin transaction
23824
+ ------------------------------------------------------------------------------------
23825
+ ForestLiana::ResourcesGetterTest: test_Sort_on_an_ambiguous_field_name_with_a_filter
23826
+ ------------------------------------------------------------------------------------
23827
+ SQL (0.7ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE (owners.name = 'Arnaud Besnier') ORDER BY trees.name DESC LIMIT 10 OFFSET 0
23828
+  (0.2ms) SELECT COUNT(DISTINCT "trees"."id") FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE (owners.name = 'Arnaud Besnier')
23829
+  (0.0ms) rollback transaction
23830
+  (0.0ms) begin transaction
23831
+ ------------------------------------------------------------------------------------------------
23832
+ ForestLiana::ResourcesGetterTest: test_Filter_on_an_updated_at_field_of_an_associated_collection
23833
+ ------------------------------------------------------------------------------------------------
23834
+ SQL (0.3ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE (owners.updated_at BETWEEN '2017-01-01 08:00:00 UTC' AND '2018-01-01 07:59:59 UTC') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
23835
+  (0.2ms) SELECT COUNT(DISTINCT "trees"."id") FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE (owners.updated_at BETWEEN '2017-01-01 08:00:00 UTC' AND '2018-01-01 07:59:59 UTC')
23836
+  (0.0ms) rollback transaction
23837
+  (0.0ms) begin transaction
23838
+ -----------------------------------------------------------------
23839
+ ForestLiana::ResourcesGetterTest: test_StringField_page_2_size_10
23840
+ -----------------------------------------------------------------
23841
+ SQL (0.2ms) SELECT "string_fields"."id" AS t0_r0, "string_fields"."field" AS t0_r1 FROM "string_fields" ORDER BY string_fields.id DESC LIMIT 10 OFFSET 10
23842
+  (0.1ms) SELECT COUNT(*) FROM "string_fields"
23843
+  (0.1ms) rollback transaction
23844
+  (0.1ms) begin transaction
23845
+ -----------------------------------------------------------------
23846
+ ForestLiana::ResourcesGetterTest: test_StringField_page_1_size_15
23847
+ -----------------------------------------------------------------
23848
+ SQL (0.3ms) SELECT "string_fields"."id" AS t0_r0, "string_fields"."field" AS t0_r1 FROM "string_fields" ORDER BY string_fields.id DESC LIMIT 15 OFFSET 0
23849
+  (0.1ms) SELECT COUNT(*) FROM "string_fields"
23850
+  (0.0ms) rollback transaction
23851
+  (0.0ms) begin transaction
23852
+ ----------------------------------------------------------------
23853
+ ForestLiana::ResourcesGetterTest: test_Filter_on_ambiguous_field
23854
+ ----------------------------------------------------------------
23855
+ SQL (0.4ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE ("trees"."created_at" > '2015-06-18 08:00:00') AND (owners.name = 'Arnaud Besnier') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
23856
+  (0.1ms) SELECT COUNT(DISTINCT "trees"."id") FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE ("trees"."created_at" > '2015-06-18 08:00:00') AND (owners.name = 'Arnaud Besnier')
23857
+  (0.0ms) rollback transaction
23858
+  (0.1ms) begin transaction
23859
+ ----------------------------------------------------------------
23860
+ ForestLiana::ResourcesGetterTest: test_StringField_sort_by_field
23861
+ ----------------------------------------------------------------
23862
+ SQL (0.2ms) SELECT "string_fields"."id" AS t0_r0, "string_fields"."field" AS t0_r1 FROM "string_fields" ORDER BY string_fields.field DESC LIMIT 10 OFFSET 0
23863
+  (0.1ms) SELECT COUNT(*) FROM "string_fields"
23864
+  (0.0ms) rollback transaction
23865
+  (0.0ms) begin transaction
23866
+ ------------------------------------------------------------
23867
+ ForestLiana::ResourcesGetterTest: test_Filter_before_x_hours
23868
+ ------------------------------------------------------------
23869
+ SQL (0.3ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4 FROM "trees" WHERE ("trees"."created_at" < '2018-06-21 21:17:22 UTC') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
23870
+  (0.1ms) SELECT COUNT(*) FROM "trees" WHERE ("trees"."created_at" < '2018-06-21 21:17:22 UTC')
23871
+ Owner Load (0.1ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ? LIMIT 1 [["id", 2]]
23872
+  (0.1ms) rollback transaction
23873
+  (0.1ms) begin transaction
23874
+ -----------------------------------------------------------------------------
23875
+ ForestLiana::ValueStatGetterTest: test_Value_stat_getter_with_a_simple_filter
23876
+ -----------------------------------------------------------------------------
23877
+  (1.2ms) SELECT DISTINCT COUNT(DISTINCT "boolean_fields"."id") FROM "boolean_fields" WHERE ("boolean_fields"."field" = 1)
23878
+  (0.1ms) rollback transaction
23879
+  (0.0ms) begin transaction
23880
+ ----------------------------------------------------------------------------------------------------
23881
+ ForestLiana::ValueStatGetterTest: test_Value_stat_getter_with_a_filter_on_a_belongs_to_boolean_field
23882
+ ----------------------------------------------------------------------------------------------------
23883
+  (0.2ms) SELECT DISTINCT COUNT(DISTINCT "belongs_to_fields"."id") FROM "belongs_to_fields" LEFT OUTER JOIN "has_one_fields" ON "has_one_fields"."id" = "belongs_to_fields"."has_one_field_id" LEFT OUTER JOIN "has_many_fields" ON "has_many_fields"."id" = "belongs_to_fields"."has_many_field_id" LEFT OUTER JOIN "has_many_class_name_fields" ON "has_many_class_name_fields"."id" = "belongs_to_fields"."has_many_class_name_field_id" WHERE ("has_one_fields"."checked" = 0)
23884
+  (0.0ms) rollback transaction
23885
+  (0.0ms) begin transaction
23886
+ -------------------------------------------------------------------------------------------------
23887
+ ForestLiana::ValueStatGetterTest: test_Value_stat_getter_with_a_filter_on_a_belongs_to_enum_field
23888
+ -------------------------------------------------------------------------------------------------
23889
+  (0.2ms) SELECT DISTINCT COUNT(DISTINCT "belongs_to_fields"."id") FROM "belongs_to_fields" LEFT OUTER JOIN "has_one_fields" ON "has_one_fields"."id" = "belongs_to_fields"."has_one_field_id" LEFT OUTER JOIN "has_many_fields" ON "has_many_fields"."id" = "belongs_to_fields"."has_many_field_id" LEFT OUTER JOIN "has_many_class_name_fields" ON "has_many_class_name_fields"."id" = "belongs_to_fields"."has_many_class_name_field_id" WHERE ("has_one_fields"."status" = '1')
23890
+  (0.0ms) rollback transaction
23891
+  (0.0ms) begin transaction
23892
+ ----------------------------------------------------------------------------------------------------
23893
+ ForestLiana::ValueStatGetterTest: test_Value_stat_getter_with_a_filter_on_a_belongs_to_integer_field
23894
+ ----------------------------------------------------------------------------------------------------
23895
+  (0.2ms) SELECT DISTINCT COUNT(DISTINCT "belongs_to_fields"."id") FROM "belongs_to_fields" LEFT OUTER JOIN "has_one_fields" ON "has_one_fields"."id" = "belongs_to_fields"."has_one_field_id" LEFT OUTER JOIN "has_many_fields" ON "has_many_fields"."id" = "belongs_to_fields"."has_many_field_id" LEFT OUTER JOIN "has_many_class_name_fields" ON "has_many_class_name_fields"."id" = "belongs_to_fields"."has_many_class_name_field_id" WHERE ("has_one_fields"."id" = '3')
23896
+  (0.0ms) rollback transaction
23897
+  (0.0ms) begin transaction
23898
+ ---------------------------------------------------------------------------------------
23899
+ ForestLiana::PieStatGetterTest: test_Pie_stat_getter_with_an_aggregate_on_a_foreign_key
23900
+ ---------------------------------------------------------------------------------------
23901
+  (1.3ms) SELECT COUNT(DISTINCT "belongs_to_fields"."id") AS count_id, belongs_to_fields.has_one_field_id AS belongs_to_fields_has_one_field_id FROM "belongs_to_fields" LEFT OUTER JOIN "has_one_fields" ON "has_one_fields"."id" = "belongs_to_fields"."has_one_field_id" LEFT OUTER JOIN "has_many_fields" ON "has_many_fields"."id" = "belongs_to_fields"."has_many_field_id" LEFT OUTER JOIN "has_many_class_name_fields" ON "has_many_class_name_fields"."id" = "belongs_to_fields"."has_many_class_name_field_id" GROUP BY belongs_to_fields.has_one_field_id ORDER BY count_id DESC
23902
+  (0.1ms) rollback transaction
23903
+  (0.0ms) begin transaction
23904
+ -----------------------------------------------------------------------------------------
23905
+ ForestLiana::PieStatGetterTest: test_Pie_stat_getter_with_an_aggregate_on_a_boolean_field
23906
+ -----------------------------------------------------------------------------------------
23907
+  (0.1ms) SELECT COUNT(*) AS count_all, boolean_fields.field AS boolean_fields_field FROM "boolean_fields" GROUP BY boolean_fields.field ORDER BY count_all DESC
23908
+  (0.0ms) rollback transaction
23909
+  (0.0ms) begin transaction
23910
+ ------------------------------------------------------------------------
23911
+ ForestLiana::SchemaAdapterTest: test_Float_should_have_the_type_`Number`
23912
+ ------------------------------------------------------------------------
23913
+  (0.1ms) rollback transaction
23914
+  (0.0ms) begin transaction
23915
+ -------------------------------------------------------------------------
23916
+ ForestLiana::SchemaAdapterTest: test_DateTime_should_have_the_type_`Date`
23917
+ -------------------------------------------------------------------------
23918
+  (0.1ms) rollback transaction
23919
+  (0.1ms) begin transaction
23920
+ -------------------------------------------------------------------------
23921
+ ForestLiana::SchemaAdapterTest: test_String_should_have_the_type_`String`
23922
+ -------------------------------------------------------------------------
23923
+  (0.0ms) rollback transaction
23924
+  (0.0ms) begin transaction
23925
+ ---------------------------------------------------------------------------
23926
+ ForestLiana::SchemaAdapterTest: test_Boolean_should_have_the_type_`Boolean`
23927
+ ---------------------------------------------------------------------------
23928
+  (0.0ms) rollback transaction
23929
+  (0.1ms) begin transaction
23930
+ ---------------------------------------------------------------------
23931
+ ForestLiana::SchemaAdapterTest: test_Date_should_have_the_type_`Date`
23932
+ ---------------------------------------------------------------------
23933
+  (0.1ms) rollback transaction
23934
+  (0.1ms) begin transaction
23935
+ ---------------------------------------------------------
23936
+ ForestLiana::SchemaAdapterTest: test_hasMany_relationship
23937
+ ---------------------------------------------------------
23938
+  (0.1ms) rollback transaction
23939
+  (0.0ms) begin transaction
23940
+ --------------------------------------------------------
23941
+ ForestLiana::SchemaAdapterTest: test_hasOne_relationship
23942
+ --------------------------------------------------------
23943
+  (0.1ms) rollback transaction
23944
+  (0.0ms) begin transaction
23945
+ --------------------------------------------------------------------------
23946
+ ForestLiana::SchemaAdapterTest: test_Decimal_should_have_the_type_`Number`
23947
+ --------------------------------------------------------------------------
23948
+  (0.1ms) rollback transaction
23949
+  (0.0ms) begin transaction
23950
+ --------------------------------------------------------------------------
23951
+ ForestLiana::SchemaAdapterTest: test_Integer_should_have_the_type_`Number`
23952
+ --------------------------------------------------------------------------
23953
+  (0.1ms) rollback transaction
23954
+  (0.0ms) begin transaction
23955
+ -----------------------------------------------------------
23956
+ ForestLiana::SchemaAdapterTest: test_belongsTo_relationship
23957
+ -----------------------------------------------------------
23958
+  (0.1ms) rollback transaction
23959
+  (0.1ms) begin transaction
23960
+ ----------------------------------------------------------------------------------
23961
+ ForestLiana::SchemaAdapterTest: test_hasMany_relationhip_with_specified_class_name
23962
+ ----------------------------------------------------------------------------------
23963
+  (0.1ms) rollback transaction
23964
+  (0.0ms) begin transaction
23965
+ ------------------------------------------------------------------------------------
23966
+ ForestLiana::SchemaAdapterTest: test_belongsTo_relationhip_with_specified_class_name
23967
+ ------------------------------------------------------------------------------------
23968
+  (0.0ms) rollback transaction
23969
+  (0.0ms) begin transaction
23970
+ ---------------------------
23971
+ ForestLianaTest: test_truth
23972
+ ---------------------------
23973
+  (0.0ms) rollback transaction
23974
+  (0.1ms) begin transaction
23975
+ -----------------------------------
23976
+ ForestLiana::RouteTest: test_Routes
23977
+ -----------------------------------
23978
+  (0.1ms) rollback transaction
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: 2.8.3
4
+ version: 2.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Munda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-20 00:00:00.000000000 Z
11
+ date: 2018-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails