lhs 20.0.0 → 20.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +29 -1
- data/lhs.gemspec +1 -0
- data/lib/lhs/rspec.rb +10 -0
- data/lib/lhs/test/stub.rb +29 -0
- data/lib/lhs/version.rb +1 -1
- data/spec/stubs/all_spec.rb +28 -0
- metadata +18 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3217c5628886888aef5df940a80a386e8c1a268739bd8937e3580b20937b6601
|
4
|
+
data.tar.gz: 04d3f83972975f96a18b3191a1c922a81c3ede6df18c99fbf386731d103df013
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfbbf1039908900cad487407b4d3886cc8f371d7deef76ea4ed59fdd77f8df175ad9ca52786ee64f2bc7f900dfa6bf63b05b8de1a6e17ea4ad9eccefdd16fb60
|
7
|
+
data.tar.gz: ef68c523a6cb8c6aec0bf34d37c9997879961b87621ec24308cf218607eea5f747981be8ff3991949a71a3eaba8282d6bd9857ede708888a3aee26b3024b323f
|
data/README.md
CHANGED
@@ -139,7 +139,9 @@ record.review # "Lunch was great
|
|
139
139
|
* [Request tracing](#request-tracing)
|
140
140
|
* [Extended Rollbar Logging](#extended-rollbar-logging)
|
141
141
|
* [Testing with LHS](#testing-with-lhs)
|
142
|
-
* [Test helper
|
142
|
+
* [Test helper](#test-helper)
|
143
|
+
* [Stub](#stub)
|
144
|
+
* [Stub All](#stub-all)
|
143
145
|
* [Test query chains](#test-query-chains)
|
144
146
|
* [By explicitly resolving the chain: fetch](#by-explicitly-resolving-the-chain-fetch)
|
145
147
|
* [Without resolving the chain: where_values_hash](#without-resolving-the-chain-where_values_hash)
|
@@ -2533,6 +2535,32 @@ require 'lhs/rspec'
|
|
2533
2535
|
This e.g. will prevent running into caching issues during your tests, when (request cycle cache)[#request-cycle-cache] is enabled.
|
2534
2536
|
It will initialize a MemoryStore cache for LHC::Caching interceptor and resets the cache before every test.
|
2535
2537
|
|
2538
|
+
#### Stub
|
2539
|
+
|
2540
|
+
LHS offers stub helpers that simplify stubbing https request to your apis.
|
2541
|
+
|
2542
|
+
##### Stub All
|
2543
|
+
|
2544
|
+
`LHS.stub.all(url, items, additional_options)`
|
2545
|
+
|
2546
|
+
```ruby
|
2547
|
+
# your_spec.rb
|
2548
|
+
|
2549
|
+
before do
|
2550
|
+
LHS.stub.all(
|
2551
|
+
'https://records',
|
2552
|
+
200.times.map{ |index| { name: "Item #{index}" } },
|
2553
|
+
headers: {
|
2554
|
+
'Authorization' => 'Bearer 123'
|
2555
|
+
}
|
2556
|
+
)
|
2557
|
+
end
|
2558
|
+
```
|
2559
|
+
```
|
2560
|
+
GET https://records?limit=100
|
2561
|
+
GET https://records?limit=100&offset=100
|
2562
|
+
```
|
2563
|
+
|
2536
2564
|
### Test query chains
|
2537
2565
|
|
2538
2566
|
#### By explicitly resolving the chain: fetch
|
data/lhs.gemspec
CHANGED
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
|
29
29
|
s.add_development_dependency 'capybara'
|
30
30
|
s.add_development_dependency 'json', '>= 1.8.2'
|
31
|
+
s.add_development_dependency 'local_uri'
|
31
32
|
s.add_development_dependency 'pry'
|
32
33
|
s.add_development_dependency 'pry-byebug'
|
33
34
|
s.add_development_dependency 'rails', '>= 4.2.11'
|
data/lib/lhs/rspec.rb
CHANGED
@@ -1,9 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'lhs'
|
4
|
+
require 'lhs/test/stub'
|
4
5
|
|
5
6
|
RSpec.configure do |config|
|
6
7
|
config.before(:each) do
|
7
8
|
LHS.config.request_cycle_cache.clear
|
8
9
|
end
|
10
|
+
|
11
|
+
config.before(:all) do
|
12
|
+
|
13
|
+
module LHS
|
14
|
+
def self.stub
|
15
|
+
LHS::Test::Stub
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
9
19
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'local_uri'
|
4
|
+
require 'webmock'
|
5
|
+
module LHS
|
6
|
+
module Test
|
7
|
+
class Stub
|
8
|
+
extend WebMock::API
|
9
|
+
DEFAULT_LIMIT = LHS::Pagination::Base::DEFAULT_LIMIT
|
10
|
+
|
11
|
+
def self.all(url, items, options = {})
|
12
|
+
items.each_slice(DEFAULT_LIMIT).with_index do |(*batch), index|
|
13
|
+
uri = LocalUri::URI.new(url)
|
14
|
+
uri.query.merge!(limit: DEFAULT_LIMIT)
|
15
|
+
uri.query.merge!(offset: DEFAULT_LIMIT * index) unless index.zero?
|
16
|
+
stub_request(:get, uri.to_s)
|
17
|
+
.with(options)
|
18
|
+
.to_return(
|
19
|
+
body: {
|
20
|
+
items: batch,
|
21
|
+
offset: index * DEFAULT_LIMIT,
|
22
|
+
total: items.length
|
23
|
+
}.to_json
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/lhs/version.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rails_helper'
|
4
|
+
require 'lhs/rspec'
|
5
|
+
|
6
|
+
describe LHS do
|
7
|
+
|
8
|
+
before do
|
9
|
+
class Record < LHS::Record
|
10
|
+
endpoint 'https://records'
|
11
|
+
end
|
12
|
+
|
13
|
+
LHS.stub.all(
|
14
|
+
'https://records',
|
15
|
+
200.times.map { |index| { name: "Item #{index}" } },
|
16
|
+
headers: {
|
17
|
+
'Authorization' => 'Bearer 123'
|
18
|
+
}
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'stubs all requests' do
|
23
|
+
records = Record.options(headers: { 'Authorization' => 'Bearer 123' }).all.fetch
|
24
|
+
expect(records.count).to eq 200
|
25
|
+
expect(records.length).to eq 200
|
26
|
+
expect(records.first.name).to eq 'Item 0'
|
27
|
+
end
|
28
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lhs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 20.
|
4
|
+
version: 20.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- https://github.com/local-ch/lhs/graphs/contributors
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 1.8.2
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: local_uri
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: pry
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -301,6 +315,7 @@ files:
|
|
301
315
|
- lib/lhs/railtie.rb
|
302
316
|
- lib/lhs/record.rb
|
303
317
|
- lib/lhs/rspec.rb
|
318
|
+
- lib/lhs/test/stub.rb
|
304
319
|
- lib/lhs/unprocessable.rb
|
305
320
|
- lib/lhs/version.rb
|
306
321
|
- script/ci/build.sh
|
@@ -487,6 +502,7 @@ files:
|
|
487
502
|
- spec/request_cycle_cache_spec.rb
|
488
503
|
- spec/require_lhs_spec.rb
|
489
504
|
- spec/spec_helper.rb
|
505
|
+
- spec/stubs/all_spec.rb
|
490
506
|
- spec/support/fixtures/json/feedback.json
|
491
507
|
- spec/support/fixtures/json/feedbacks.json
|
492
508
|
- spec/support/fixtures/json/localina_content_ad.json
|
@@ -703,6 +719,7 @@ test_files:
|
|
703
719
|
- spec/request_cycle_cache_spec.rb
|
704
720
|
- spec/require_lhs_spec.rb
|
705
721
|
- spec/spec_helper.rb
|
722
|
+
- spec/stubs/all_spec.rb
|
706
723
|
- spec/support/fixtures/json/feedback.json
|
707
724
|
- spec/support/fixtures/json/feedbacks.json
|
708
725
|
- spec/support/fixtures/json/localina_content_ad.json
|