couch_potato-rspec 4.2.0 → 4.4.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: 9d68de0bf53b36f20a95ded75fb2ce46d9f98c8f5e3f827d96a0b8a9223990a4
4
- data.tar.gz: 13a2791430a4fcdad0b1bda153b0649654928221a55a2640f323a37e9b7854e5
3
+ metadata.gz: fa56480a95f50cbb7d4f9e4a2c5a16da89f17f696a6a06ffa65d45233e1c896d
4
+ data.tar.gz: f2583c19f0ebd21727517836353c5b28ec5b929220250880563a520299c57aac
5
5
  SHA512:
6
- metadata.gz: 3fda46a962a7c1294fa3e2d5b95e38e2624523b93a9c05cb78ba300ef3ccba6ac9f1a1e1bb96cb54a5b16ff44dce38d9894782aac081e74efa23378ba9fb8df9
7
- data.tar.gz: b9e88e7081943e7dae05754bf9bd81f8ef807996171b16c8d0063fe19ebf330dee2eedf67b374213ef5e69baf0c9453d2709ec936f0194ce56f25ef588469a38
6
+ metadata.gz: 5bd117d88eae328561a20e843e19a78b0163c7b8c1e1ba4f6665944ab2422571fabc1500faa678542637a83e8e7b64b6b94ba63d4e3cc638f73de12988193662
7
+ data.tar.gz: 4c77c9d423f001f36b3c1e0308b266909d033a1a5b073738f55f453cb1f9edd966414cd7a79c92407ce9f8f1ef898f85a95440361fc3f34269b873db44fc4a67
@@ -20,28 +20,50 @@ module CouchPotato::RSpec
20
20
  self
21
21
  end
22
22
 
23
- def and_return(return_value)
23
+ def and_return(*return_values)
24
24
  view_stub = double("#{@clazz}.#{@view}(#{@args.try(:join, ', ')}) view")
25
25
  stub = allow(@clazz).to receive(@view)
26
26
  stub.with(*@args) if @args
27
27
  stub.and_return(view_stub)
28
- allow(@db).to receive(:view).with(view_stub).and_return(return_value)
29
- return unless return_value.respond_to?(:first)
30
28
 
31
- allow(@db).to receive(:first).with(view_stub).and_return(return_value.first)
29
+ view_return_values = return_values.map do |return_value|
30
+ if flex_view? && return_value.is_a?(Array)
31
+ stub_flex_results(return_value)
32
+ else
33
+ return_value
34
+ end
35
+ end
36
+ allow(@db).to receive(:view).with(view_stub).and_return(*view_return_values)
37
+ return unless return_values.all? { |v| v.respond_to?(:first) }
38
+
39
+ allow(@db).to receive(:first).with(view_stub).and_return(*return_values.map(&:first))
40
+ remaining_for_batches = return_values.dup
32
41
  allow(@db)
33
42
  .to receive(:view_in_batches) do |_view, batch_size: CouchPotato::Database.default_batch_size, &block|
43
+ return_value = remaining_for_batches.size > 1 ? remaining_for_batches.shift : remaining_for_batches.first
34
44
  batches = return_value.in_groups_of(batch_size, false)
35
45
  batches.each(&block)
36
46
  end
37
47
  .with(view_stub, any_args)
38
48
 
39
- if return_value.first
40
- allow(@db).to receive(:first!).with(view_stub).and_return(return_value.first)
41
- else
42
- allow(@db).to receive(:first!).with(view_stub).and_raise(CouchPotato::NotFound)
49
+ remaining_for_first = return_values.dup
50
+ allow(@db).to receive(:first!).with(view_stub) do
51
+ return_value = remaining_for_first.size > 1 ? remaining_for_first.shift : remaining_for_first.first
52
+ raise CouchPotato::NotFound unless return_value.first
53
+
54
+ return_value.first
43
55
  end
44
56
  end
57
+
58
+ private
59
+
60
+ def flex_view?
61
+ @clazz.execute_view(@view.to_s, {}).is_a?(CouchPotato::View::FlexViewSpec)
62
+ end
63
+
64
+ def stub_flex_results(docs)
65
+ instance_double(CouchPotato::View::FlexViewSpec::Results, docs:)
66
+ end
45
67
  end
46
68
 
47
69
  def stub_view(clazz, view, &block)
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: couch_potato-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.0
4
+ version: 4.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Lang
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-06-03 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rspec
@@ -68,7 +67,6 @@ files:
68
67
  homepage: http://github.com/langalex/couch_potato
69
68
  licenses: []
70
69
  metadata: {}
71
- post_install_message:
72
70
  rdoc_options: []
73
71
  require_paths:
74
72
  - lib
@@ -83,8 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
81
  - !ruby/object:Gem::Version
84
82
  version: '0'
85
83
  requirements: []
86
- rubygems_version: 3.4.7
87
- signing_key:
84
+ rubygems_version: 3.6.9
88
85
  specification_version: 4
89
86
  summary: RSpec matchers for Couch Potato
90
87
  test_files: