forest_liana 9.5.4 → 9.5.5

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: '01219141321710917e3b67dcd37db280425c4cf1620c491172c4bc7ab5616047'
4
- data.tar.gz: 12f0c3ae8d97f28a82e70f38c93545f0bed346607c7301a63436077a3e95e858
3
+ metadata.gz: 3d1c39075bf7b59d268ffd575ef52feb25eb8a67a370f08b4f94a1bca39288ac
4
+ data.tar.gz: 3c7e36125001dd9ed399239848260652ea6736b18cf9c93a3bf7a4eba7b2497c
5
5
  SHA512:
6
- metadata.gz: 775dbe23c00ecd54bd64cde35a6efc3c40d72d1e873fa9e11d7077c830a1778001d6a90f4c4e9373dcd782e39d371b6673dab6b8f8e7a539a44b0bda49d14f78
7
- data.tar.gz: 42441b9c0e1df5f8d760b0216982865ce1c6193452c9fd2677708b1c3171cd162dee9ae61365013a8bb4790998ff2f3cac2e3fe96dc80bd64ecfc6bd003b7ae5
6
+ metadata.gz: f30ea56ebf1e756c17df2398c6746b89165fadda18427b48b3685e5f78276c5994c586f33067c366ddb132245d4a0b0c40e3a562c39a01379319ef8cd7ce84ac
7
+ data.tar.gz: 57b9e0b67ca52e8f5703cd989a627f53e2eea910ba923a62f14b22482cee38ee9d0b22ac91aa38fe2f5b29a1a0244ac50cdad93f50cbfe113c73515c5c4d0cc8
@@ -30,6 +30,7 @@ module ForestLiana
30
30
  if field.try(:[], :search)
31
31
  begin
32
32
  @records = field[:search].call(@records, @search)
33
+ (@fields_searched << field[:field].to_s) if field[:type] == 'String'
33
34
  rescue => exception
34
35
  FOREST_REPORTER.report exception
35
36
  FOREST_LOGGER.error "Cannot search properly on Smart Field:\n" \
@@ -1,3 +1,3 @@
1
1
  module ForestLiana
2
- VERSION = "9.5.4"
2
+ VERSION = "9.5.5"
3
3
  end
@@ -8,7 +8,12 @@ class Forest::User
8
8
  "name IS '#{capitalize_name}'"
9
9
  end
10
10
 
11
- field :cap_name, type: 'String', filter: filter_cap_name do
11
+ search_cap_name = lambda do |query, search|
12
+ # Injects your new filter into the query.
13
+ query.or(User.where("name = '#{search}'"))
14
+ end
15
+
16
+ field :cap_name, type: 'String', filter: filter_cap_name, search: search_cap_name do
12
17
  object.name.upcase
13
18
  end
14
19
 
@@ -154,6 +154,100 @@ describe 'Requesting Tree resources', :type => :request do
154
154
  end
155
155
  end
156
156
 
157
+ describe 'Requesting User resources', :type => :request do
158
+ describe 'index' do
159
+ before do
160
+ User.create(name: 'John')
161
+
162
+ Rails.cache.write('forest.users', {'1' => { 'id' => 1, 'roleId' => 1, 'rendering_id' => '1' }})
163
+ Rails.cache.write('forest.has_permission', true)
164
+ Rails.cache.write(
165
+ 'forest.collections',
166
+ {
167
+ 'User' => {
168
+ 'browse' => [1],
169
+ 'read' => [1],
170
+ 'edit' => [1],
171
+ 'add' => [1],
172
+ 'delete' => [1],
173
+ 'export' => [1],
174
+ 'actions' => {}
175
+ }
176
+ }
177
+ )
178
+
179
+ allow(ForestLiana::IpWhitelist).to receive(:retrieve) { true }
180
+ allow(ForestLiana::IpWhitelist).to receive(:is_ip_whitelist_retrieved) { true }
181
+ allow(ForestLiana::IpWhitelist).to receive(:is_ip_valid) { true }
182
+ allow(ForestLiana::ScopeManager).to receive(:fetch_scopes).and_return(
183
+ {'scopes' => {}, 'team' => {'id' => '1', 'name' => 'Operations'}}
184
+ )
185
+ end
186
+
187
+ after do
188
+ User.destroy_all
189
+ end
190
+
191
+ it 'should respond the user data with meta when search apply on simple column and smart field' do
192
+ token = JWT.encode({
193
+ id: 1,
194
+ email: 'michael.kelso@that70.show',
195
+ first_name: 'Michael',
196
+ last_name: 'Kelso',
197
+ team: 'Operations',
198
+ rendering_id: 16,
199
+ exp: Time.now.to_i + 2.weeks.to_i,
200
+ permission_level: 'admin'
201
+ }, ForestLiana.auth_secret, 'HS256')
202
+
203
+ headers = {
204
+ 'Accept' => 'application/json',
205
+ 'Content-Type' => 'application/json',
206
+ 'Authorization' => "Bearer #{token}"
207
+ }
208
+
209
+ params = {
210
+ fields: { 'User' => 'id,name,cap_name' },
211
+ page: { 'number' => '1', 'size' => '10' },
212
+ searchExtended: '0',
213
+ search: 'JOHN',
214
+ sort: '-id',
215
+ timezone: 'Europe/Paris'
216
+ }
217
+
218
+ allow(ForestAdmin::JSONAPI::Serializer).to receive(:serialize).and_return(
219
+ { "data" => [
220
+ {
221
+ "type" => "User",
222
+ "id" => "1",
223
+ "attributes" => { "id" => 1, "name" => "John", "cap_name" => "JOHN" },
224
+ "links" => { "self" => "/forest/user/1" }
225
+ }
226
+ ], "included" => [] }
227
+ )
228
+
229
+ get '/forest/User', params: params, headers: headers
230
+
231
+ expect(JSON.parse(response.body)).to include(
232
+ "data" => [
233
+ {
234
+ "type" => "User",
235
+ "id" => "1",
236
+ "attributes" => {
237
+ "id" => 1,
238
+ "name" => "John",
239
+ "cap_name" => "JOHN"
240
+ },
241
+ "links" => { "self" => "/forest/user/1" },
242
+ }
243
+ ],
244
+ "included" => [],
245
+ "meta" => { 'decorators' => { '0' => { 'id' => "1", 'search' => %w[name cap_name] } } }
246
+ )
247
+ end
248
+ end
249
+ end
250
+
157
251
  describe 'Requesting Address resources', :type => :request do
158
252
  let(:scope_filters) { {'scopes' => {}, 'team' => {'id' => '1', 'name' => 'Operations'}} }
159
253
  before do
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.5.4
4
+ version: 9.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Munda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-04 00:00:00.000000000 Z
11
+ date: 2024-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails