dhs 1.1.0 → 1.2.0

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: 1880fd170b224c3968acc2c3d77f2aa2b31bf6205f0427a30d8041081feafda9
4
- data.tar.gz: 85e87c2fd8b9f0931286d7b4343839c9951f6a22f201d2dcd1135fad0dccf4f7
3
+ metadata.gz: ca31fdaf95b8fbff1a8de50591e9861554d00fed99645e79f01cd2363de9e8b7
4
+ data.tar.gz: 06d8d350c5da6878fd6c54a76826bb56c4fb506f6bc8c9be732743014b875f50
5
5
  SHA512:
6
- metadata.gz: 15623d271f53db3a97af63412ee8a325ffa3ed8039bfbe3716a5fb337341f978cfde0893f811111eaee487d4f01d8c6e32cd70d5f6de5389d0a6d7a66a65d4bc
7
- data.tar.gz: 507dd7ccbcd98f21060dfb1c90fa1e849aa63319e842bc1f70d8aa06398aeb4edbc9f7763890090b9252df93606851f598e901451e750ad4fd4ae0c772a04ead
6
+ metadata.gz: 00035a95ea3b634fc97f6af5c7592b32e09a7135a371d29e234c54ee240da99b1b71ce8305b6342aa61b7fb9103c26576a6e729cfead930d7754745d106b5bda
7
+ data.tar.gz: 8f844da13a8f5d011b6179310b5ac1629853f3be24496eeba52b425412a5d7159fd2cb89744953afa2a0d615ef696c04993e3b3f921891bac060bd8d1702d63d
data/README.md CHANGED
@@ -305,6 +305,20 @@ records = Record.blue.available(true)
305
305
  GET https://service.example.com/records?color=blue&available=true
306
306
  ```
307
307
 
308
+ #### order
309
+
310
+ Set the expected order of things using `.order`
311
+
312
+ ```ruby
313
+ # app/controllers/some_controller.rb
314
+
315
+ Record.where(color: 'blue').order(:name, { created_at: :desc })
316
+
317
+ ```
318
+ ```
319
+ GET https://service.example.com/records?color=blue&order[name]=asc&order[created_at]=desc
320
+ ```
321
+
308
322
  #### all
309
323
 
310
324
  You can fetch all remote records by using `all`. Pagination will be performed automatically (See: [Record pagination](#record-pagination))
@@ -222,6 +222,20 @@ class DHS::Record
222
222
  end
223
223
  end
224
224
 
225
+ def order(*args)
226
+ order_params = {}
227
+ args.each do |arg|
228
+ if arg.is_a?(Hash)
229
+ arg.each do |key, value|
230
+ order_params[key] = value
231
+ end
232
+ else
233
+ order_params[arg.to_s] = 'asc'
234
+ end
235
+ end
236
+ push(Parameter.new(order: order_params))
237
+ end
238
+
225
239
  def all(hash = nil)
226
240
  push([Parameter.new(hash), Option.new(all: true)])
227
241
  end
data/lib/dhs/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DHS
4
- VERSION = '1.1.0'
4
+ VERSION = '1.2.0'
5
5
  end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails_helper'
4
+
5
+ describe DHS::Record do
6
+ context 'order in where chains' do
7
+ before do
8
+ class Record < DHS::Record
9
+ endpoint 'http://records'
10
+ end
11
+ end
12
+
13
+ context 'single parameter for order' do
14
+ before do
15
+ stub_request(:get, 'http://records/?color=blue&order[created_at]=desc')
16
+ .to_return(body: [{ name: 'ordered by created_at desc' }].to_json)
17
+ end
18
+
19
+ it 'allows to add order params with .order' do
20
+ records = Record.where(color: 'blue').order(created_at: :desc)
21
+ expect(records.first.name).to eq 'ordered by created_at desc'
22
+ end
23
+ end
24
+
25
+ context 'multiple parameters for order' do
26
+ before do
27
+ stub_request(:get, 'http://records/?color=blue&order[name]=asc&order[created_at]=desc')
28
+ .to_return(body: [{ name: 'ordered by name asc (implicitly) and created_at desc (explicitly)' }].to_json)
29
+ end
30
+
31
+ it 'allows to add order params with .order' do
32
+ records = Record.where(color: 'blue').order(:name, created_at: :desc)
33
+ expect(records.first.name).to eq 'ordered by name asc (implicitly) and created_at desc (explicitly)'
34
+ end
35
+ end
36
+ end
37
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dhs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://github.com/DePayFi/dhs/graphs/contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-21 00:00:00.000000000 Z
11
+ date: 2021-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -517,6 +517,7 @@ files:
517
517
  - spec/record/new_spec.rb
518
518
  - spec/record/options_getter_spec.rb
519
519
  - spec/record/options_spec.rb
520
+ - spec/record/order_spec.rb
520
521
  - spec/record/paginatable_collection_spec.rb
521
522
  - spec/record/pagination_chain_spec.rb
522
523
  - spec/record/pagination_links_spec.rb
@@ -752,6 +753,7 @@ test_files:
752
753
  - spec/record/new_spec.rb
753
754
  - spec/record/options_getter_spec.rb
754
755
  - spec/record/options_spec.rb
756
+ - spec/record/order_spec.rb
755
757
  - spec/record/paginatable_collection_spec.rb
756
758
  - spec/record/pagination_chain_spec.rb
757
759
  - spec/record/pagination_links_spec.rb