forest_liana 9.5.4 → 9.5.5

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