dhs 1.1.0 → 1.2.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
  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