forest_liana 9.20.4 → 9.20.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e11078e22f2bf038e25056074bc9389f3335eb43dd2369e114c2df52dbe3d6b0
4
- data.tar.gz: 44d80d3b1c9074ba4c2992ae1c45d3cb7b67e764ab940e0f428f1d14bebcd2e2
3
+ metadata.gz: 31b55dea3884f93640870ded7c0f4079cea1792d7842b05c0b3d1c610a463d0b
4
+ data.tar.gz: bc7faa9c4f0302159f57d5e1e376d697047fd0a0c2ad1c94f3fb651078a87395
5
5
  SHA512:
6
- metadata.gz: 11f3ba2356911a83238bf2e2186cede6746c6079a4ab59add90288dcb3c92d2e0f6a795e776433b96b6548a6857b4a7e0b210f3711a0304dcb70461a00455a4a
7
- data.tar.gz: 7e6b38924b464bcc9ba5ea9a617f860f0ef29e7b5c4e14920752e9059b31c2839a3ca1e374f5d2bf089c0e791cb5c17639b7bff7986f17e0444279512416fb01
6
+ metadata.gz: 2e707a5df3a857e9bbb61c0cefa2d593feae5b724f05b3d18f45df2a0abdcc724d6db0367b514e89d9074c5646b8994d2c2d0330735b9da8e4a3810f5460317d
7
+ data.tar.gz: f757f804039e32d4ef70b0b544ca1297933d633ef063ff692fa79c5fc8d7ee5daeee817a859956c7ed4fcfaaab966ef2fc6dd70d47061cbcd1218e059136bcad
@@ -27,6 +27,11 @@ module ForestLiana
27
27
  def count
28
28
  find_resource
29
29
  find_association
30
+ # NOTICE: find_association renders a 404 (without halting) when the
31
+ # association name does not resolve; stop here instead of falling
32
+ # through and dereferencing a nil @association, which surfaced as
33
+ # a double-render / 500 rather than the intended 404.
34
+ return if performed?
30
35
  begin
31
36
  getter = HasManyGetter.new(@resource, @association, params, forest_user)
32
37
  getter.count
@@ -33,7 +33,9 @@ module ForestLiana
33
33
  key = @resource.defined_enums[@params[:groupByFieldName]].invert[key]
34
34
  elsif @resource.columns_hash[@params[:groupByFieldName]] &&
35
35
  @resource.columns_hash[@params[:groupByFieldName]].type == :datetime
36
- key = (key + timezone_offset.hours).strftime('%d/%m/%Y %T')
36
+ # NOTICE: A nil datetime group key would raise NoMethodError on
37
+ # `nil + timezone_offset.hours`; label it explicitly.
38
+ key = key.present? ? (key + timezone_offset.hours).strftime('%d/%m/%Y %T') : 'No value'
37
39
  end
38
40
 
39
41
  { key: key, value: value }
@@ -1,3 +1,3 @@
1
1
  module ForestLiana
2
- VERSION = "9.20.4"
2
+ VERSION = "9.20.6"
3
3
  end
@@ -74,6 +74,20 @@ describe 'Requesting Owner', :type => :request do
74
74
  end
75
75
  end
76
76
 
77
+ describe 'count on an unknown relationship' do
78
+ params = {
79
+ fields: { 'Tree' => 'id,name,owner' },
80
+ page: { 'number' => '1', 'size' => '10' },
81
+ searchExtended: '0',
82
+ timezone: 'Europe/Paris'
83
+ }
84
+
85
+ it 'should respond 404 instead of 500' do
86
+ get '/forest/Owner/5/relationships/unknown_things/count', params: params, headers: headers
87
+ expect(response.status).to eq(404)
88
+ end
89
+ end
90
+
77
91
  describe 'deactivate_count_response' do
78
92
  params = {
79
93
  fields: { 'Owner' => 'id,name' },
@@ -44,6 +44,33 @@ module ForestLiana
44
44
  end
45
45
  end
46
46
 
47
+ describe 'grouping by a nullable datetime field with a null value' do
48
+ let(:scopes) { {'scopes' => {}, 'team' => {'id' => '1', 'name' => 'Operations'}} }
49
+ let(:model) { Tree }
50
+ let(:collection) { 'trees' }
51
+ let(:params) {
52
+ {
53
+ type: 'Pie',
54
+ sourceCollectionName: collection,
55
+ timezone: 'Europe/Paris',
56
+ aggregator: 'Count',
57
+ groupByFieldName: 'created_at'
58
+ }
59
+ }
60
+
61
+ subject { PieStatGetter.new(model, params, user) }
62
+
63
+ before do
64
+ tree = Tree.create!(name: 'No date tree', age: 1)
65
+ tree.update_columns(created_at: nil)
66
+ end
67
+
68
+ it 'labels the null bucket "No value" instead of raising on nil + offset' do
69
+ expect { subject.perform }.not_to raise_error
70
+ expect(subject.record.value.map { |entry| entry[:key] }).to include('No value')
71
+ end
72
+ end
73
+
47
74
  describe 'with valid aggregate function' do
48
75
  let(:model) { Tree }
49
76
  let(:collection) { 'trees' }
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: 9.20.4
4
+ version: 9.20.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Munda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-31 00:00:00.000000000 Z
11
+ date: 2026-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails