forest_liana 2.8.6 → 2.9.0

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: 06ee98bd084d430f0186929f3110bdbd8ba312c3
4
- data.tar.gz: 620f173b19e149c111f4668ce188963204e9bf75
3
+ metadata.gz: d6ca5367c20024181a9f7fa697a8a8a611808d23
4
+ data.tar.gz: e93a008c261472651aa1684b0394d94bc2e1a774
5
5
  SHA512:
6
- metadata.gz: 4f098615bf8c7d28d7e1bec2cb9d3f550db354a78ea6cc7eb09ad7c4d690da03b2cd56fa09d2810fc7b3e7e3d75c4d7d21618fc559a7f15eb69eeecb72cfd354
7
- data.tar.gz: 1b07fc7dc2af35de9edf6dd06a1b1b82fbdfaec539a58808dfd5475f4a69e4315b0d26e837ca766e4a4b290b31d6beacb79ddadc9b847005c2698959bbc64f0c
6
+ metadata.gz: 39d2528f84175b7ef1a2d61b8c75a0bb98e2c82ac62063d7303fe00ebdb3cbd8e5b326de5afe5fc4131c193cc2fd18d4c1111f0e5d2977e1e8206f1aeb42926a
7
+ data.tar.gz: b41cdd0f644a11c89b8a56e203fb61d12f19b1adc12554ba1e169b18fa8101158f5ea0956d509dd748ae0675bad6454a3620e869d6f4c14dcd2ce963976dedea
@@ -40,18 +40,19 @@ module ForestLiana
40
40
  force_utf8_encoding(json)
41
41
  end
42
42
 
43
- def serialize_models(records, options = {})
43
+ def serialize_models(records, options = {}, fields_searched = [])
44
44
  options[:is_collection] = true
45
45
  json = JSONAPI::Serializer.serialize(records, options)
46
46
 
47
- if options[:count]
48
- json[:meta] = {} unless json[:meta]
49
- json[:meta][:count] = options[:count]
47
+ if options[:params][:search]
48
+ # NOTICE: Add the Smart Fields with a 'String' type.
49
+ fields_searched.concat(get_collection.string_smart_fields_names).uniq!
50
+ json['meta'][:decorators] = ForestLiana::DecorationHelper
51
+ .decorate_for_search(json, fields_searched, options[:params][:search])
50
52
  end
51
53
 
52
54
  if !options[:has_more].nil?
53
- json[:meta] = {} unless json[:meta]
54
- json[:meta][:has_more] = options[:has_more]
55
+ json['meta'][:has_more] = options[:has_more]
55
56
  end
56
57
 
57
58
  force_utf8_encoding(json)
@@ -112,13 +112,22 @@ module ForestLiana
112
112
 
113
113
  json = serialize_models(
114
114
  records,
115
- include: includes,
116
- fields: fields_to_serialize,
117
- count: getter.count,
118
- params: params
115
+ {
116
+ include: includes,
117
+ fields: fields_to_serialize,
118
+ meta: { count: getter.count },
119
+ params: params
120
+ },
121
+ getter.search_query_builder.fields_searched
119
122
  )
120
123
 
121
124
  render serializer: nil, json: json
122
125
  end
126
+
127
+ def get_collection
128
+ model_association = @resource.reflect_on_association(params[:association_name].to_sym).klass
129
+ collection_name = ForestLiana.name_for(model_association)
130
+ @collection ||= ForestLiana.apimap.find { |collection| collection.name.to_s == collection_name }
131
+ end
123
132
  end
124
133
  end
@@ -6,7 +6,7 @@ module ForestLiana
6
6
 
7
7
  render serializer: nil, json: serialize_models(getter.records, {
8
8
  context: { type: get_serializer_type('intercom_conversations') },
9
- count: getter.count
9
+ meta: { count: getter.count }
10
10
  })
11
11
  end
12
12
 
@@ -159,13 +159,21 @@ module ForestLiana
159
159
 
160
160
  json = serialize_models(
161
161
  records,
162
- include: includes(getter),
163
- fields: fields_to_serialize,
164
- count: getter.count,
165
- params: params
162
+ {
163
+ include: includes(getter),
164
+ fields: fields_to_serialize,
165
+ meta: { count: getter.count },
166
+ params: params
167
+ },
168
+ getter.search_query_builder.fields_searched
166
169
  )
167
170
 
168
171
  render serializer: nil, json: json
169
172
  end
173
+
174
+ def get_collection
175
+ collection_name = ForestLiana.name_for(@resource)
176
+ @collection ||= ForestLiana.apimap.find { |collection| collection.name.to_s == collection_name }
177
+ end
170
178
  end
171
179
  end
@@ -8,7 +8,7 @@ module ForestLiana
8
8
 
9
9
  render serializer: nil, json: serialize_models(getter.records, {
10
10
  context: { type: get_serializer_type('stripe_payments') },
11
- count: getter.count,
11
+ meta: { count: getter.count },
12
12
  include: ['customer']
13
13
  })
14
14
  end
@@ -44,7 +44,7 @@ module ForestLiana
44
44
 
45
45
  render serializer: nil, json: serialize_models(getter.records, {
46
46
  context: { type: get_serializer_type('stripe_cards') },
47
- count: getter.count,
47
+ meta: { count: getter.count },
48
48
  include: ['customer']
49
49
  })
50
50
  end
@@ -68,7 +68,7 @@ module ForestLiana
68
68
 
69
69
  render serializer: nil, json: serialize_models(getter.records, {
70
70
  context: { type: get_serializer_type('stripe_invoices') },
71
- count: getter.count,
71
+ meta: { count: getter.count },
72
72
  include: ['customer']
73
73
  })
74
74
  end
@@ -92,7 +92,7 @@ module ForestLiana
92
92
 
93
93
  render serializer: nil, json: serialize_models(getter.records, {
94
94
  context: { type: get_serializer_type('stripe_subscriptions') },
95
- count: getter.count,
95
+ meta: { count: getter.count },
96
96
  include: ['customer']
97
97
  })
98
98
  end
@@ -117,7 +117,7 @@ module ForestLiana
117
117
 
118
118
  render serializer: nil, json: serialize_models(getter.records, {
119
119
  context: { type: get_serializer_type('stripe_bank_accounts') },
120
- count: getter.count,
120
+ meta: { count: getter.count },
121
121
  include: ['customer']
122
122
  })
123
123
  end
@@ -0,0 +1,21 @@
1
+ module ForestLiana
2
+ module DecorationHelper
3
+ def self.decorate_for_search(records_serialized, field_names, search_value)
4
+ match_fields = {}
5
+ records_serialized['data'].each_with_index do |record, index|
6
+ field_names.each do |field_name|
7
+ value = record['attributes'][field_name]
8
+ if value
9
+ match = value.match(/#{search_value}/i)
10
+ if match
11
+ match_fields[index] = { id: record['id'], search: [] } if match_fields[index].nil?
12
+ match_fields[index][:search] << field_name
13
+ end
14
+ end
15
+ end
16
+ end
17
+ match_fields.empty? ? nil : match_fields
18
+ end
19
+
20
+ end
21
+ end
@@ -33,4 +33,10 @@ class ForestLiana::Model::Collection
33
33
  def fields_belongs_to
34
34
  fields.select { |field| field[:type] == 'String' && !field[:reference].nil? }
35
35
  end
36
+
37
+ def string_smart_fields_names
38
+ fields
39
+ .select { |field| field[:'is-virtual'] && field[:type] == 'String' }
40
+ .map { |field| field[:field].to_s }
41
+ end
36
42
  end
@@ -1,11 +1,15 @@
1
1
  module ForestLiana
2
2
  class HasManyGetter < BaseGetter
3
+ attr_reader :search_query_builder
4
+
3
5
  def initialize(resource, association, params)
4
6
  @resource = resource
5
7
  @association = association
6
8
  @params = params
7
9
  @field_names_requested = field_names_requested
8
10
  @collection = get_collection(ForestLiana.name_for(model_association))
11
+ includes_symbols = includes.map { |association| association.to_sym }
12
+ @search_query_builder = SearchQueryBuilder.new(@params, includes_symbols, @collection)
9
13
  end
10
14
 
11
15
  def perform
@@ -18,8 +22,7 @@ module ForestLiana
18
22
  end
19
23
 
20
24
  def search_query
21
- includesSymbols = includes.map { |association| association.to_sym }
22
- SearchQueryBuilder.new(@records, @params, includesSymbols, @collection).perform
25
+ @search_query_builder.perform(@records)
23
26
  end
24
27
 
25
28
  def includes
@@ -1,5 +1,7 @@
1
1
  module ForestLiana
2
2
  class ResourcesGetter < BaseGetter
3
+ attr_reader :search_query_builder
4
+
3
5
  def initialize(resource, params)
4
6
  @resource = resource
5
7
  @params = params
@@ -8,6 +10,7 @@ module ForestLiana
8
10
  @collection = get_collection(@collection_name)
9
11
  @field_names_requested = field_names_requested
10
12
  get_segment()
13
+ @search_query_builder = SearchQueryBuilder.new(@params, includes, @collection)
11
14
  end
12
15
 
13
16
  def perform
@@ -122,7 +125,7 @@ module ForestLiana
122
125
  end
123
126
 
124
127
  def search_query
125
- SearchQueryBuilder.new(@records, @params, includes, @collection).perform
128
+ @search_query_builder.perform(@records)
126
129
  end
127
130
 
128
131
  def sort_query
@@ -2,14 +2,17 @@ module ForestLiana
2
2
  class SearchQueryBuilder
3
3
  REGEX_UUID = /\A[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\z/i
4
4
 
5
- def initialize(resource, params, includes, collection)
6
- @resource = @records = resource
5
+ attr_reader :fields_searched
6
+
7
+ def initialize(params, includes, collection)
7
8
  @params = params
8
9
  @includes = includes
9
10
  @collection = collection
11
+ @fields_searched = []
10
12
  end
11
13
 
12
- def perform
14
+ def perform(resource)
15
+ @resource = @records = resource
13
16
  @records = search_param
14
17
  @records = filter_param
15
18
  @records = has_many_filter
@@ -50,6 +53,7 @@ module ForestLiana
50
53
  conditions = []
51
54
 
52
55
  @resource.columns.each_with_index do |column, index|
56
+ @fields_searched << column.name if [:string, :text].include? column.type
53
57
  column_name = format_column_name(@resource.table_name, column.name)
54
58
  if (@collection.search_fields && !@collection.search_fields.include?(column.name))
55
59
  conditions
@@ -1,3 +1,3 @@
1
1
  module ForestLiana
2
- VERSION = "2.8.6"
2
+ VERSION = "2.9.0"
3
3
  end
Binary file
@@ -55260,3 +55260,448 @@ ForestLiana::SchemaAdapterTest: test_Boolean_should_have_the_type_`Boolean`
55260
55260
  ForestLiana::SchemaAdapterTest: test_belongsTo_relationship
55261
55261
  -----------------------------------------------------------
55262
55262
   (0.1ms) rollback transaction
55263
+ ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
55264
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
55265
+  (0.1ms)  SELECT sql
55266
+ FROM sqlite_master
55267
+ WHERE name='index_belongs_to_class_name_fields_on_foo_id' AND type='index'
55268
+ UNION ALL
55269
+ SELECT sql
55270
+ FROM sqlite_temp_master
55271
+ WHERE name='index_belongs_to_class_name_fields_on_foo_id' AND type='index'
55272
+ 
55273
+  (0.1ms) SELECT sql
55274
+ FROM sqlite_master
55275
+ WHERE name='index_belongs_to_fields_on_has_many_field_id' AND type='index'
55276
+ UNION ALL
55277
+ SELECT sql
55278
+ FROM sqlite_temp_master
55279
+ WHERE name='index_belongs_to_fields_on_has_many_field_id' AND type='index'
55280
+
55281
+  (0.1ms)  SELECT sql
55282
+ FROM sqlite_master
55283
+ WHERE name='index_belongs_to_fields_on_has_many_class_name_field_id' AND type='index'
55284
+ UNION ALL
55285
+ SELECT sql
55286
+ FROM sqlite_temp_master
55287
+ WHERE name='index_belongs_to_fields_on_has_many_class_name_field_id' AND type='index'
55288
+ 
55289
+  (0.1ms) SELECT sql
55290
+ FROM sqlite_master
55291
+ WHERE name='index_belongs_to_fields_on_has_one_field_id' AND type='index'
55292
+ UNION ALL
55293
+ SELECT sql
55294
+ FROM sqlite_temp_master
55295
+ WHERE name='index_belongs_to_fields_on_has_one_field_id' AND type='index'
55296
+
55297
+  (0.1ms)  SELECT sql
55298
+ FROM sqlite_master
55299
+ WHERE name='index_has_many_fields_on_has_many_through_field_id' AND type='index'
55300
+ UNION ALL
55301
+ SELECT sql
55302
+ FROM sqlite_temp_master
55303
+ WHERE name='index_has_many_fields_on_has_many_through_field_id' AND type='index'
55304
+ 
55305
+  (0.1ms) SELECT sql
55306
+ FROM sqlite_master
55307
+ WHERE name='index_polymorphic_fields_on_has_one_field_id' AND type='index'
55308
+ UNION ALL
55309
+ SELECT sql
55310
+ FROM sqlite_temp_master
55311
+ WHERE name='index_polymorphic_fields_on_has_one_field_id' AND type='index'
55312
+
55313
+  (0.1ms)  SELECT sql
55314
+ FROM sqlite_master
55315
+ WHERE name='index_trees_on_owner_id' AND type='index'
55316
+ UNION ALL
55317
+ SELECT sql
55318
+ FROM sqlite_temp_master
55319
+ WHERE name='index_trees_on_owner_id' AND type='index'
55320
+ 
55321
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
55322
+  (0.1ms) begin transaction
55323
+ Fixture Delete (0.7ms) DELETE FROM "has_many_through_fields"
55324
+ Fixture Insert (0.4ms) INSERT INTO "has_many_through_fields" ("id") VALUES (1)
55325
+ Fixture Insert (0.1ms) INSERT INTO "has_many_through_fields" ("id") VALUES (2)
55326
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (3)
55327
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (4)
55328
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (5)
55329
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (6)
55330
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (7)
55331
+ Fixture Insert (0.1ms) INSERT INTO "has_many_through_fields" ("id") VALUES (8)
55332
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (9)
55333
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (10)
55334
+ Fixture Delete (0.4ms) DELETE FROM "string_fields"
55335
+ Fixture Insert (0.1ms) INSERT INTO "string_fields" ("id", "field") VALUES (1, 'Test 1')
55336
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (2, 'Test 2')
55337
+ Fixture Insert (3.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (3, 'Test 3')
55338
+ Fixture Insert (0.1ms) INSERT INTO "string_fields" ("id", "field") VALUES (4, 'Test 4')
55339
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (5, 'Test 5')
55340
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (6, 'Test 6')
55341
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (7, 'Test 7')
55342
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (8, 'Test 8')
55343
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (9, 'Test 9')
55344
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (10, 'Test 10')
55345
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (11, 'Test 11')
55346
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (12, 'Test 12')
55347
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (13, 'Test 13')
55348
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (14, 'Test 14')
55349
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (15, 'Test 15')
55350
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (16, 'Test 16')
55351
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (17, 'Test 17')
55352
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (18, 'Test 18')
55353
+ Fixture Insert (0.1ms) INSERT INTO "string_fields" ("id", "field") VALUES (19, 'Test 19')
55354
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (20, 'Test 20')
55355
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (21, 'Test 21')
55356
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (22, 'Test 22')
55357
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (23, 'Test 23')
55358
+ Fixture Insert (0.1ms) INSERT INTO "string_fields" ("id", "field") VALUES (24, 'Test 24')
55359
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (25, 'Test 25')
55360
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (26, 'Test 26')
55361
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (27, 'Test 27')
55362
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (28, 'Test 28')
55363
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (29, 'Test 29')
55364
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (30, 'Test 30')
55365
+ Fixture Delete (1.0ms) DELETE FROM "belongs_to_fields"
55366
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (1, 1, 1)
55367
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (2, 2, 1)
55368
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (3, 3, 1)
55369
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (4, 4, 2)
55370
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (5, 5, 2)
55371
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (6, 6, 2)
55372
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (7, 7, 3)
55373
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (8, 8, 3)
55374
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (9, 9, 3)
55375
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (10, 10, 4)
55376
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (11, 11, 4)
55377
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (12, 12, 4)
55378
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (13, 13, 5)
55379
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (14, 14, 5)
55380
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (15, 15, 5)
55381
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (16, 16, 6)
55382
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (17, 17, 6)
55383
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (18, 18, 6)
55384
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (19, 19, 7)
55385
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (20, 20, 7)
55386
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (21, 21, 7)
55387
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (22, 22, 7)
55388
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (23, 23, 8)
55389
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (24, 24, 8)
55390
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (25, 25, 9)
55391
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (26, 26, 9)
55392
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (27, 27, 9)
55393
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (28, 28, 10)
55394
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (29, 29, 10)
55395
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (30, 30, 10)
55396
+ Fixture Delete (0.7ms) DELETE FROM "trees"
55397
+ 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')
55398
+ Fixture Insert (0.1ms) 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')
55399
+ 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')
55400
+ 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')
55401
+ 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')
55402
+ Fixture Insert (0.0ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (6, 'Oak', 3, '2018-06-28 17:26:42.000000', '2018-06-28 17:26:42.000000')
55403
+ Fixture Insert (0.0ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (7, 'Sequoia', 1, '2018-06-28 17:26:42.000000', '2018-06-28 17:26:42.000000')
55404
+ Fixture Insert (0.0ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (8, 'Fir', 1, '2018-06-28 17:26:42.000000', '2018-06-28 17:26:42.000000')
55405
+ Fixture Delete (0.4ms) DELETE FROM "has_one_fields"
55406
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (1, 't', 0)
55407
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (2, 't', 0)
55408
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (3, 't', 0)
55409
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (4, 't', 0)
55410
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (5, 't', 0)
55411
+ Fixture Insert (0.2ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (6, 't', 0)
55412
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (7, 't', 0)
55413
+ Fixture Insert (0.2ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (8, 't', 0)
55414
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (9, 't', 0)
55415
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (10, 't', 0)
55416
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (11, 't', 0)
55417
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (12, 't', 0)
55418
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (13, 't', 0)
55419
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (14, 't', 0)
55420
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (15, 't', 0)
55421
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (16, 't', 0)
55422
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (17, 't', 0)
55423
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (18, 't', 0)
55424
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (19, 't', 0)
55425
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (20, 't', 0)
55426
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (21, 't', 0)
55427
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (22, 't', 0)
55428
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (23, 't', 0)
55429
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (24, 't', 0)
55430
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (25, 't', 0)
55431
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (26, 't', 0)
55432
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (27, 't', 0)
55433
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (28, 't', 0)
55434
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (29, 't', 0)
55435
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (30, 't', 1)
55436
+ Fixture Delete (0.5ms) DELETE FROM "owners"
55437
+ 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')
55438
+ Fixture Insert (0.3ms) 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')
55439
+ 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')
55440
+ Fixture Delete (0.7ms) DELETE FROM "has_many_fields"
55441
+ Fixture Insert (0.1ms) INSERT INTO "has_many_fields" ("id") VALUES (1)
55442
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (2)
55443
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (3)
55444
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (4)
55445
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id", "has_many_through_field_id") VALUES (5, 3)
55446
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id", "has_many_through_field_id") VALUES (6, 2)
55447
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (7)
55448
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id", "has_many_through_field_id") VALUES (8, 2)
55449
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (9)
55450
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (10)
55451
+ Fixture Delete (0.1ms) DELETE FROM "serialize_fields"
55452
+ Fixture Insert (0.0ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (1, 'value 1')
55453
+ Fixture Insert (0.0ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (2, 'value 2')
55454
+ Fixture Insert (0.0ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (3, 'value 3')
55455
+ Fixture Insert (0.1ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (4, 'value 4')
55456
+ Fixture Insert (0.1ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (5, 'value 5')
55457
+  (1.8ms) commit transaction
55458
+  (0.0ms) begin transaction
55459
+ ------------------------------------------------------------------------------------
55460
+ ForestLiana::SchemaAdapterTest: test_belongsTo_relationhip_with_specified_class_name
55461
+ ------------------------------------------------------------------------------------
55462
+  (0.1ms) rollback transaction
55463
+  (0.2ms) begin transaction
55464
+ ---------------------------------------------------------------------
55465
+ ForestLiana::SchemaAdapterTest: test_Date_should_have_the_type_`Date`
55466
+ ---------------------------------------------------------------------
55467
+  (0.1ms) rollback transaction
55468
+  (0.1ms) begin transaction
55469
+ -----------------------------------------------------------
55470
+ ForestLiana::SchemaAdapterTest: test_belongsTo_relationship
55471
+ -----------------------------------------------------------
55472
+  (0.1ms) rollback transaction
55473
+  (0.0ms) begin transaction
55474
+ -------------------------------------------------------------------------
55475
+ ForestLiana::SchemaAdapterTest: test_DateTime_should_have_the_type_`Date`
55476
+ -------------------------------------------------------------------------
55477
+  (0.1ms) rollback transaction
55478
+  (0.1ms) begin transaction
55479
+ --------------------------------------------------------------------------
55480
+ ForestLiana::SchemaAdapterTest: test_Integer_should_have_the_type_`Number`
55481
+ --------------------------------------------------------------------------
55482
+  (0.1ms) rollback transaction
55483
+  (0.1ms) begin transaction
55484
+ ----------------------------------------------------------------------------------
55485
+ ForestLiana::SchemaAdapterTest: test_hasMany_relationhip_with_specified_class_name
55486
+ ----------------------------------------------------------------------------------
55487
+  (0.1ms) rollback transaction
55488
+  (0.0ms) begin transaction
55489
+ ---------------------------------------------------------------------------
55490
+ ForestLiana::SchemaAdapterTest: test_Boolean_should_have_the_type_`Boolean`
55491
+ ---------------------------------------------------------------------------
55492
+  (0.1ms) rollback transaction
55493
+  (0.1ms) begin transaction
55494
+ -------------------------------------------------------------------------
55495
+ ForestLiana::SchemaAdapterTest: test_String_should_have_the_type_`String`
55496
+ -------------------------------------------------------------------------
55497
+  (0.1ms) rollback transaction
55498
+  (0.0ms) begin transaction
55499
+ ------------------------------------------------------------------------
55500
+ ForestLiana::SchemaAdapterTest: test_Float_should_have_the_type_`Number`
55501
+ ------------------------------------------------------------------------
55502
+  (0.1ms) rollback transaction
55503
+  (0.1ms) begin transaction
55504
+ --------------------------------------------------------------------------
55505
+ ForestLiana::SchemaAdapterTest: test_Decimal_should_have_the_type_`Number`
55506
+ --------------------------------------------------------------------------
55507
+  (0.1ms) rollback transaction
55508
+  (0.1ms) begin transaction
55509
+ --------------------------------------------------------
55510
+ ForestLiana::SchemaAdapterTest: test_hasOne_relationship
55511
+ --------------------------------------------------------
55512
+  (0.1ms) rollback transaction
55513
+  (0.1ms) begin transaction
55514
+ ---------------------------------------------------------
55515
+ ForestLiana::SchemaAdapterTest: test_hasMany_relationship
55516
+ ---------------------------------------------------------
55517
+  (0.1ms) rollback transaction
55518
+  (0.1ms) begin transaction
55519
+ -----------------------------------------------------------------------------------------
55520
+ ForestLiana::PieStatGetterTest: test_Pie_stat_getter_with_an_aggregate_on_a_boolean_field
55521
+ -----------------------------------------------------------------------------------------
55522
+  (0.5ms) 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
55523
+  (0.1ms) rollback transaction
55524
+  (0.1ms) begin transaction
55525
+ ---------------------------------------------------------------------------------------
55526
+ ForestLiana::PieStatGetterTest: test_Pie_stat_getter_with_an_aggregate_on_a_foreign_key
55527
+ ---------------------------------------------------------------------------------------
55528
+  (1.0ms) 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
55529
+  (0.1ms) rollback transaction
55530
+  (0.1ms) begin transaction
55531
+ ---------------------------
55532
+ ForestLianaTest: test_truth
55533
+ ---------------------------
55534
+  (0.0ms) rollback transaction
55535
+  (0.2ms) begin transaction
55536
+ ------------------------------------------------------------------------------------------------------
55537
+ ForestLiana::ResourceUpdaterTest: test_Update_a_record_on_a_"serialize"_attribute_with_a_missing_value
55538
+ ------------------------------------------------------------------------------------------------------
55539
+ SerializeField Load (0.2ms) SELECT "serialize_fields".* FROM "serialize_fields" WHERE "serialize_fields"."id" = ? LIMIT 1 [["id", 1]]
55540
+  (0.1ms) SAVEPOINT active_record_1
55541
+  (0.1ms) RELEASE SAVEPOINT active_record_1
55542
+  (0.1ms) rollback transaction
55543
+  (0.0ms) begin transaction
55544
+ ---------------------------------------------------------------------------------------------------------
55545
+ ForestLiana::ResourceUpdaterTest: test_Update_a_record_on_a_"serialize"_attribute_with_a_bad_format_value
55546
+ ---------------------------------------------------------------------------------------------------------
55547
+ SerializeField Load (0.1ms) SELECT "serialize_fields".* FROM "serialize_fields" WHERE "serialize_fields"."id" = ? LIMIT 1 [["id", 1]]
55548
+  (0.1ms) rollback transaction
55549
+  (0.1ms) begin transaction
55550
+ ---------------------------------------------------------------------------------------------------
55551
+ ForestLiana::ResourceUpdaterTest: test_Update_a_record_on_a_"serialize"_attribute_with_a_null_value
55552
+ ---------------------------------------------------------------------------------------------------
55553
+ SerializeField Load (0.1ms) SELECT "serialize_fields".* FROM "serialize_fields" WHERE "serialize_fields"."id" = ? LIMIT 1 [["id", 1]]
55554
+  (0.0ms) SAVEPOINT active_record_1
55555
+ SQL (0.4ms) UPDATE "serialize_fields" SET "field" = ? WHERE "serialize_fields"."id" = ? [["field", nil], ["id", 1]]
55556
+  (0.1ms) RELEASE SAVEPOINT active_record_1
55557
+  (0.5ms) rollback transaction
55558
+  (0.1ms) begin transaction
55559
+ ------------------------------------------------------------------------------------------------------------
55560
+ ForestLiana::ResourceUpdaterTest: test_Update_a_record_on_a_"serialize"_attribute_with_a_well_formated_value
55561
+ ------------------------------------------------------------------------------------------------------------
55562
+ SerializeField Load (0.1ms) SELECT "serialize_fields".* FROM "serialize_fields" WHERE "serialize_fields"."id" = ? LIMIT 1 [["id", 1]]
55563
+  (0.1ms) SAVEPOINT active_record_1
55564
+ SQL (0.3ms) UPDATE "serialize_fields" SET "field" = ? WHERE "serialize_fields"."id" = ? [["field", "---\n- test\n- test\n"], ["id", 1]]
55565
+  (0.1ms) RELEASE SAVEPOINT active_record_1
55566
+  (0.5ms) rollback transaction
55567
+  (0.1ms) begin transaction
55568
+ ------------------------------------------------------------------------------------------------
55569
+ ForestLiana::ResourcesGetterTest: test_Filter_on_an_updated_at_field_of_an_associated_collection
55570
+ ------------------------------------------------------------------------------------------------
55571
+ 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 (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
55572
+  (0.3ms) 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')
55573
+  (0.1ms) rollback transaction
55574
+  (0.0ms) begin transaction
55575
+ ----------------------------------------------------------------
55576
+ ForestLiana::ResourcesGetterTest: test_StringField_sort_by_field
55577
+ ----------------------------------------------------------------
55578
+ SQL (0.3ms) 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
55579
+  (0.1ms) SELECT COUNT(*) FROM "string_fields"
55580
+  (0.3ms) rollback transaction
55581
+  (0.2ms) begin transaction
55582
+ ------------------------------------------------------------------------------------------------------
55583
+ ForestLiana::ResourcesGetterTest: test_Filter_equal_on_an_updated_at_field_of_an_associated_collection
55584
+ ------------------------------------------------------------------------------------------------------
55585
+ 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 = 'Sat Jul 02 2016 11:52:00 GMT-0400 (EDT)') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
55586
+  (0.2ms) 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)')
55587
+  (0.1ms) rollback transaction
55588
+  (0.0ms) begin transaction
55589
+ -----------------------------------------------------------------------
55590
+ ForestLiana::ResourcesGetterTest: test_Sort_by_a_belongs_to_association
55591
+ -----------------------------------------------------------------------
55592
+ SQL (9.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
55593
+  (0.3ms) SELECT COUNT(*) FROM "belongs_to_fields"
55594
+  (0.1ms) rollback transaction
55595
+  (0.0ms) begin transaction
55596
+ ------------------------------------------------------------
55597
+ ForestLiana::ResourcesGetterTest: test_Filter_before_x_hours
55598
+ ------------------------------------------------------------
55599
+ 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 FROM "trees" WHERE ("trees"."created_at" < '2018-06-28 17:25:42 UTC') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
55600
+  (0.1ms) SELECT COUNT(*) FROM "trees" WHERE ("trees"."created_at" < '2018-06-28 17:25:42 UTC')
55601
+ Owner Load (0.1ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ? LIMIT 1 [["id", 2]]
55602
+  (0.1ms) rollback transaction
55603
+  (0.0ms) begin transaction
55604
+ -----------------------------------------------------------------
55605
+ ForestLiana::ResourcesGetterTest: test_StringField_page_2_size_10
55606
+ -----------------------------------------------------------------
55607
+ 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
55608
+  (0.1ms) SELECT COUNT(*) FROM "string_fields"
55609
+  (0.1ms) rollback transaction
55610
+  (0.2ms) begin transaction
55611
+ -------------------------------------------------------------------------------------------
55612
+ ForestLiana::ResourcesGetterTest: test_Filter_on_an_updated_at_field_of_the_main_collection
55613
+ -------------------------------------------------------------------------------------------
55614
+ 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
55615
+  (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')
55616
+  (0.1ms) rollback transaction
55617
+  (0.0ms) begin transaction
55618
+ --------------------------------------------------------------------
55619
+ ForestLiana::ResourcesGetterTest: test_Sort_by_a_has_one_association
55620
+ --------------------------------------------------------------------
55621
+ SQL (0.6ms) 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
55622
+  (0.1ms) SELECT COUNT(*) FROM "has_one_fields"
55623
+  (0.0ms) rollback transaction
55624
+  (0.1ms) begin transaction
55625
+ ------------------------------------------------------------------------------------
55626
+ ForestLiana::ResourcesGetterTest: test_Sort_on_an_ambiguous_field_name_with_a_filter
55627
+ ------------------------------------------------------------------------------------
55628
+ 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.name = 'Arnaud Besnier') ORDER BY trees.name DESC LIMIT 10 OFFSET 0
55629
+  (0.1ms) SELECT COUNT(DISTINCT "trees"."id") FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE (owners.name = 'Arnaud Besnier')
55630
+  (0.0ms) rollback transaction
55631
+  (0.0ms) begin transaction
55632
+ -----------------------------------------------------------------
55633
+ ForestLiana::ResourcesGetterTest: test_StringField_page_1_size_15
55634
+ -----------------------------------------------------------------
55635
+ SQL (0.1ms) 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
55636
+  (0.1ms) SELECT COUNT(*) FROM "string_fields"
55637
+  (0.0ms) rollback transaction
55638
+  (0.0ms) begin transaction
55639
+ ----------------------------------------------------------
55640
+ ForestLiana::ResourcesGetterTest: test_Filter_after_x_days
55641
+ ----------------------------------------------------------
55642
+ 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 FROM "trees" WHERE ("trees"."created_at" > '2018-06-28 17:25:42 UTC') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
55643
+  (0.1ms) SELECT COUNT(*) FROM "trees" WHERE ("trees"."created_at" > '2018-06-28 17:25:42 UTC')
55644
+  (0.1ms) rollback transaction
55645
+  (0.1ms) begin transaction
55646
+ ----------------------------------------------------------------
55647
+ ForestLiana::ResourcesGetterTest: test_Filter_on_ambiguous_field
55648
+ ----------------------------------------------------------------
55649
+ 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 ("trees"."created_at" > '2015-06-18 08:00:00') AND (owners.name = 'Arnaud Besnier') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
55650
+  (0.2ms) 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')
55651
+  (0.1ms) rollback transaction
55652
+  (0.1ms) begin transaction
55653
+ -----------------------------------
55654
+ ForestLiana::RouteTest: test_Routes
55655
+ -----------------------------------
55656
+  (0.1ms) rollback transaction
55657
+  (0.1ms) begin transaction
55658
+ ----------------------------------------------------------------------------------------------------
55659
+ ForestLiana::ValueStatGetterTest: test_Value_stat_getter_with_a_filter_on_a_belongs_to_boolean_field
55660
+ ----------------------------------------------------------------------------------------------------
55661
+  (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)
55662
+  (0.0ms) rollback transaction
55663
+  (0.0ms) begin transaction
55664
+ -------------------------------------------------------------------------------------------------
55665
+ ForestLiana::ValueStatGetterTest: test_Value_stat_getter_with_a_filter_on_a_belongs_to_enum_field
55666
+ -------------------------------------------------------------------------------------------------
55667
+  (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')
55668
+  (0.0ms) rollback transaction
55669
+  (0.0ms) begin transaction
55670
+ -----------------------------------------------------------------------------
55671
+ ForestLiana::ValueStatGetterTest: test_Value_stat_getter_with_a_simple_filter
55672
+ -----------------------------------------------------------------------------
55673
+  (0.1ms) SELECT DISTINCT COUNT(DISTINCT "boolean_fields"."id") FROM "boolean_fields" WHERE ("boolean_fields"."field" = 1)
55674
+  (0.0ms) rollback transaction
55675
+  (0.0ms) begin transaction
55676
+ ----------------------------------------------------------------------------------------------------
55677
+ ForestLiana::ValueStatGetterTest: test_Value_stat_getter_with_a_filter_on_a_belongs_to_integer_field
55678
+ ----------------------------------------------------------------------------------------------------
55679
+  (0.3ms) 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')
55680
+  (0.0ms) rollback transaction
55681
+  (0.0ms) begin transaction
55682
+ -------------------------------------------------------------------------
55683
+ ForestLiana::HasManyGetterTest: test_HasMany_Getter_with_search_parameter
55684
+ -------------------------------------------------------------------------
55685
+ Owner Load (0.1ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ? LIMIT 1 [["id", 1]]
55686
+  (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]]
55687
+  (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]]
55688
+ 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" = ? AND (LOWER("trees"."name") LIKE '%fir%') ORDER BY "trees"."id" ASC LIMIT 1 OFFSET 0 [["owner_id", 1]]
55689
+  (0.1ms) rollback transaction
55690
+  (0.0ms) begin transaction
55691
+ -----------------------------------------------------------------------
55692
+ ForestLiana::HasManyGetterTest: test_HasMany_Getter_with_sort_parameter
55693
+ -----------------------------------------------------------------------
55694
+ Owner Load (0.1ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ? LIMIT 1 [["id", 1]]
55695
+  (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]]
55696
+  (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]]
55697
+ 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]]
55698
+  (0.1ms) rollback transaction
55699
+  (0.0ms) begin transaction
55700
+ ------------------------------------------------------------------
55701
+ ForestLiana::HasManyGetterTest: test_HasMany_Getter_page_1_size_15
55702
+ ------------------------------------------------------------------
55703
+ Owner Load (0.1ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ? LIMIT 1 [["id", 1]]
55704
+  (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]]
55705
+  (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]]
55706
+ 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]]
55707
+  (0.0ms) 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.6
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Munda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-27 00:00:00.000000000 Z
11
+ date: 2018-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -152,6 +152,7 @@ files:
152
152
  - app/deserializers/forest_liana/resource_deserializer.rb
153
153
  - app/helpers/forest_liana/adapter_helper.rb
154
154
  - app/helpers/forest_liana/application_helper.rb
155
+ - app/helpers/forest_liana/decoration_helper.rb
155
156
  - app/models/forest_liana/model/action.rb
156
157
  - app/models/forest_liana/model/collection.rb
157
158
  - app/models/forest_liana/model/segment.rb