forest_liana 2.8.3 → 2.8.4

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
  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