rspec-solr 1.0.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +53 -0
- data/.travis.yml +1 -3
- data/.yardopts +1 -1
- data/Gemfile +2 -0
- data/MATCHERS.md +168 -0
- data/{README.rdoc → README.md} +31 -26
- data/Rakefile +4 -4
- data/lib/rspec-solr.rb +6 -7
- data/lib/rspec-solr/compare_num_docs_matcher.rb +32 -49
- data/lib/rspec-solr/have_documents_matcher.rb +10 -19
- data/lib/rspec-solr/have_facet_field_matcher.rb +16 -24
- data/lib/rspec-solr/include_documents_matcher.rb +65 -46
- data/lib/rspec-solr/solr_response_hash.rb +52 -55
- data/lib/rspec-solr/version.rb +1 -1
- data/lib/tasks/ci.rake +4 -4
- data/lib/tasks/doc.rake +8 -8
- data/lib/tasks/spec.rake +1 -1
- data/rspec-solr.gemspec +20 -20
- data/spec/comparing_num_docs_in_2_resp_spec.rb +205 -217
- data/spec/have_documents_spec.rb +37 -39
- data/spec/have_facet_field_spec.rb +69 -74
- data/spec/include_before_spec.rb +69 -77
- data/spec/include_document_spec.rb +317 -340
- data/spec/include_in_each_of_first_n_spec.rb +76 -79
- data/spec/include_in_first_n_spec.rb +188 -192
- data/spec/number_of_documents_spec.rb +192 -201
- data/spec/solr_response_hash_spec.rb +85 -92
- data/spec/spec_helper.rb +5 -16
- metadata +44 -31
- data/MATCHERS.rdoc +0 -169
- data/spec/support/matchers.rb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 614534dc732f46bfc1fe137e447bec23eb04e480
|
4
|
+
data.tar.gz: 69fed90ebd9a576ebc14e52493a90e8d5c8ea8d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b75ea440dcd94fdc5ff553af14dec0e56373a141aeb806abd9dec92d76655590f67bf744577e897471d50126bcb372ba07915a8985700d60552a49d66de882a4
|
7
|
+
data.tar.gz: 827e79d09922c16d08518a46c50d5dcf087be3d8826379187a89c6d40190c3db202f963774b52631ded7e4b9753ff617b3817e808593c7003ae67b1e462ec12a
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# This configuration was generated by `rubocop --auto-gen-config`
|
2
|
+
# on 2015-06-26 14:31:43 -0700 using RuboCop version 0.32.0.
|
3
|
+
# The point is for the user to remove these configuration records
|
4
|
+
# one by one as the offenses are removed from the code base.
|
5
|
+
# Note that changes in the inspected code, or installation of new
|
6
|
+
# versions of RuboCop, may require this file to be generated again.
|
7
|
+
|
8
|
+
# Offense count: 4
|
9
|
+
Metrics/AbcSize:
|
10
|
+
Max: 26
|
11
|
+
|
12
|
+
# Offense count: 2
|
13
|
+
# Configuration parameters: CountComments.
|
14
|
+
Metrics/ClassLength:
|
15
|
+
Max: 110
|
16
|
+
|
17
|
+
# Offense count: 4
|
18
|
+
Metrics/CyclomaticComplexity:
|
19
|
+
Max: 13
|
20
|
+
|
21
|
+
# Offense count: 409
|
22
|
+
# Configuration parameters: AllowURI, URISchemes.
|
23
|
+
Metrics/LineLength:
|
24
|
+
Max: 211
|
25
|
+
|
26
|
+
# Offense count: 11
|
27
|
+
# Configuration parameters: CountComments.
|
28
|
+
Metrics/MethodLength:
|
29
|
+
Max: 43
|
30
|
+
|
31
|
+
# Offense count: 4
|
32
|
+
Metrics/PerceivedComplexity:
|
33
|
+
Max: 16
|
34
|
+
|
35
|
+
# Offense count: 4
|
36
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
37
|
+
Style/ClassAndModuleChildren:
|
38
|
+
Enabled: false
|
39
|
+
|
40
|
+
# Offense count: 3
|
41
|
+
Style/Documentation:
|
42
|
+
Enabled: false
|
43
|
+
|
44
|
+
# Offense count: 1
|
45
|
+
# Configuration parameters: Exclude.
|
46
|
+
Style/FileName:
|
47
|
+
Enabled: false
|
48
|
+
|
49
|
+
# Offense count: 3
|
50
|
+
# Configuration parameters: NamePrefix, NamePrefixBlacklist.
|
51
|
+
Style/PredicateName:
|
52
|
+
Enabled: false
|
53
|
+
|
data/.travis.yml
CHANGED
data/.yardopts
CHANGED
data/Gemfile
CHANGED
data/MATCHERS.md
ADDED
@@ -0,0 +1,168 @@
|
|
1
|
+
# RSpec-Solr Matchers for RSpec-Solr::SolrResponseHash
|
2
|
+
|
3
|
+
(rspec-solr_resp_hash..should ... or rspec-solr_resp_hash..should_not ...)
|
4
|
+
|
5
|
+
## MATCHING WHETHER RESPONSE HAS DOCUMENTS OR NOT
|
6
|
+
|
7
|
+
NOTE: this is about the TOTAL number of Solr documents that match ("numFound"), NOT solely the documents returned in this response
|
8
|
+
|
9
|
+
### Matcher
|
10
|
+
* `have_documents`
|
11
|
+
|
12
|
+
### Usage
|
13
|
+
* `expect(rspec-solr_resp_hash).to have_documents`
|
14
|
+
* `expect(rspec-solr_resp_hash).not_to have_documents`
|
15
|
+
|
16
|
+
## MATCHING NUMBER OF DOCUMENTS
|
17
|
+
|
18
|
+
NOTE: this is about the TOTAL number of Solr documents that match ("numFound"), NOT solely the documents returned in this response
|
19
|
+
|
20
|
+
### Matchers
|
21
|
+
* `have(2).documents`
|
22
|
+
* `have_exactly(4).documents`
|
23
|
+
* `have_at_least(3).documents`
|
24
|
+
* `have_at_most(3).documents`
|
25
|
+
|
26
|
+
### Usage
|
27
|
+
* rspec-solr_resp_hash.should have(3).documents
|
28
|
+
* rspec-solr_resp_hash.should_not have(2).documents
|
29
|
+
* rspec-solr_resp_hash.should have_at_least(3).documents
|
30
|
+
* rspec-solr_resp_hash.should have_at_most(4).documents
|
31
|
+
|
32
|
+
## MATCHING SPECIFIC DOCUMENTS IN RESPONSE
|
33
|
+
|
34
|
+
NOTE: this is about the Solr documents returned in THIS response
|
35
|
+
|
36
|
+
### Matcher
|
37
|
+
* `include()`
|
38
|
+
|
39
|
+
### Usage
|
40
|
+
#### Specifying Single Document
|
41
|
+
##### String
|
42
|
+
* (`"idval"`)
|
43
|
+
NOTE: value of the unique id field (defaults to 'id') in the Solr document
|
44
|
+
To change the id field name, use my_solr_response_hash.id_field='my_id_fldname'
|
45
|
+
##### Hash
|
46
|
+
* (`"fldname" => "value"`)
|
47
|
+
* (`"fldname" => /regex_to_match_val/`)
|
48
|
+
* (`"fld1" => "val1", "fld2" => /val2_regex/`)
|
49
|
+
NOTE: single Solr document must satisfy all key value pairs
|
50
|
+
* (`"fldname" => ["val1", /val2_regex/, "val3"]`)
|
51
|
+
NOTE: all of the Array values must be present for the fld in a single Solr document
|
52
|
+
should_not for Array implies NONE of the values should be present in a single document
|
53
|
+
|
54
|
+
More Ideas (TODO):
|
55
|
+
* `include_title("val")` (i.e. include_anyFieldName("val") )
|
56
|
+
|
57
|
+
#### Specifying Multiple Documents
|
58
|
+
##### Array
|
59
|
+
* by id strings: (`["id1", "id2", "id3"]`)
|
60
|
+
* by hashes: (`[{"title" => "green is best"}, {"title" => /blue/}, {"fld" => "val"}]`)
|
61
|
+
NOTE: you cannot do this: (`[{"title" => ["Solr doc 1 title", "Solr doc 2 title"]} ]`) to specify multiple documents
|
62
|
+
* by mix of id strings and hashes: (`[{"title" => "green is best"}, "id3", {"author" => "steinbeck"}]`)
|
63
|
+
|
64
|
+
#### Full Examples
|
65
|
+
* `expect(rspec-solr_resp_hash).to include("fld1" => "val1")`
|
66
|
+
* `expect(rspec-solr_resp_hash).to include("fld1" => /regex_for_val/)`
|
67
|
+
* `expect(rspec-solr_resp_hash).to include("f1" => "v1", "f2" => ["val1", "val2", /regex_for_val/])`
|
68
|
+
* `expect(rspec-solr_resp_hash).to include("idval")`
|
69
|
+
* `expect(rspec-solr_resp_hash).to include(["id1", "id2", "id3"])`
|
70
|
+
* `expect(rspec-solr_resp_hash).to include([{"title" => "title1"}, {"title" => "title2"}])`
|
71
|
+
* `expect(rspec-solr_resp_hash).to include([{"title" => "title1"}, {"title" => "title2"}, "id8"])`
|
72
|
+
|
73
|
+
## MATCHING SPECIFIC DOCUMENTS OCCURRING IN FIRST N RESULTS
|
74
|
+
|
75
|
+
NOTE: this is about the Solr documents returned in THIS response
|
76
|
+
|
77
|
+
### Matchers
|
78
|
+
* `include().as_first`
|
79
|
+
* `include().as_first.document`
|
80
|
+
* `include().in_first(n)`
|
81
|
+
* `include(Array).in_first(n).results `
|
82
|
+
* `include(Hash).in_each_of_first(n).documents`
|
83
|
+
|
84
|
+
Note that the following are equivalent:
|
85
|
+
* `include().blah.document`
|
86
|
+
* `include().blah.documents`
|
87
|
+
* `include().blah.result`
|
88
|
+
* `include().blah.results`
|
89
|
+
|
90
|
+
TODO:
|
91
|
+
* `include_at_least(3).of_these_documents().in_first(3).results`
|
92
|
+
* `start_with()`
|
93
|
+
|
94
|
+
### Usage
|
95
|
+
See above for information on how to specify specific documents
|
96
|
+
* `expect(rspec-solr_resp_hash).to include("111").as_first.document`
|
97
|
+
* `expect(rspec-solr_resp_hash).to include(["111", "222"]).as_first.documents`
|
98
|
+
* `expect(rspec-solr_resp_hash).to include([{"title" => "title1"}, {"title" => "title2"}]).in_first(3).results`
|
99
|
+
* `expect(rspec-solr_resp_hash).to include("fld1" => "val1").in_first(3)`
|
100
|
+
* `expect(rspec-solr_resp_hash).to include("title" => /cooking/).in_first(3).results`
|
101
|
+
|
102
|
+
## MATCHING RELATIVE ORDER OF SPECIFIC DOCUMENTS
|
103
|
+
|
104
|
+
NOTE: this is about the Solr documents returned in THIS response
|
105
|
+
|
106
|
+
### Matcher
|
107
|
+
* `include().before()`
|
108
|
+
NOTE: documents are specified the same way inside both sets of parens (see Usage for examples and see above re: specifying documents)
|
109
|
+
|
110
|
+
TODO: Potential Syntax:
|
111
|
+
* `include().before_first_occurrence_of()`
|
112
|
+
* `include().within(3).of_document()`
|
113
|
+
* `expect(subject.document(:title => 'vala')).to come_before(subject.document(:title =>'valb'))`
|
114
|
+
* `expect(subject).to have_result_field_ordered("title", "vala", "valb") `
|
115
|
+
|
116
|
+
### Usage
|
117
|
+
* `expect(rspec-solr_resp_hash).to include("111").before("222")`
|
118
|
+
* `expect(rspec-solr_resp_hash).to include("fld"=>"val").before("fld"=>["val1", "val2", "val3"])`
|
119
|
+
* `expect(rspec-solr_resp_hash).to include([{"title" => "title1"}, {"title" => "title2"}]).before("title" => "title3")`
|
120
|
+
|
121
|
+
|
122
|
+
## COMPARING TOTAL RESULTS OF TWO RESPONSES
|
123
|
+
|
124
|
+
NOTE: this is about the TOTAL number of Solr documents that match ("numFound"), NOT solely the documents returned in THESE responses
|
125
|
+
|
126
|
+
### Matchers
|
127
|
+
* `have_more_results_than()`
|
128
|
+
* `have_fewer_results_than()`
|
129
|
+
* `have_the_same_number_of_results_as()`
|
130
|
+
* `have_more_documents_than()`
|
131
|
+
* `have_fewer_documents_than()`
|
132
|
+
* `have_the_same_number_of_documents_as()`
|
133
|
+
|
134
|
+
### Usage
|
135
|
+
* `expect(rspec-solr_resp_hash1).to have_more_results_than(rspec-solr_resp_hash2)`
|
136
|
+
* `expect(rspec-solr_resp_hash1).to have_fewer_results_than(rspec-solr_resp_hash2)`
|
137
|
+
* `expect(rspec-solr_resp_hash1).to have_the_same_number_of_results_as(rspec-solr_resp_hash2)`
|
138
|
+
|
139
|
+
#### Alternate (allows more granularity)
|
140
|
+
* `expect(rspec-solr_resp_hash1.size).to > rspec-solr_resp_hash2.size`
|
141
|
+
* `expect(rspec-solr_resp_hash1.size).to >= rspec-solr_resp_hash2.size`
|
142
|
+
* `expect(rspec-solr_resp_hash1.size).to < rspec-solr_resp_hash2.size`
|
143
|
+
* `expect(rspec-solr_resp_hash1.size).to <= rspec-solr_resp_hash2.size`
|
144
|
+
* `expect(rspec-solr_resp_hash1.size).to == rspec-solr_resp_hash2.size`
|
145
|
+
* `expect(rspec-solr_resp_hash1.size).to be_within(delta).of(rspec-solr_resp_hash2.size)`
|
146
|
+
|
147
|
+
## MATCHING FACET VALUES IN RESPONSE
|
148
|
+
|
149
|
+
NOTE: this is about the facet counts returned in THIS response
|
150
|
+
|
151
|
+
### Matchers
|
152
|
+
* `have_facet_field()`
|
153
|
+
* `have_facet_field().with_value()`
|
154
|
+
|
155
|
+
### Usage
|
156
|
+
* `expect(rspec-solr_resp_hash).to have_facet_field("author")`
|
157
|
+
* `expect(rspec-solr_resp_hash).to have_facet_field("author").with_value("Steinbeck, John")`
|
158
|
+
|
159
|
+
### TODO:
|
160
|
+
* facets with arrarr and without (Solr option to get better facet formatting)
|
161
|
+
* `have_facet_field().with_value().with_count()`
|
162
|
+
* more ideas
|
163
|
+
* `facet(:format => "Book")`
|
164
|
+
* `facets(:format => ["Image", "Map"])`
|
165
|
+
* `include_facet().before_facet()`
|
166
|
+
* `include_facets().before_facet()`
|
167
|
+
* `include_facet().before_facets()`
|
168
|
+
* `include_facets().before_facets()`
|
data/{README.rdoc → README.md}
RENAMED
@@ -1,10 +1,12 @@
|
|
1
|
-
=
|
1
|
+
[![Build Status](https://travis-ci.org/sul-dlss/rspec-solr.svg?branch=master)](https://travis-ci.org/sul-dlss/rspec-solr)
|
2
|
+
[![Coverage Status](https://coveralls.io/repos/sul-dlss/rspec-solr/badge.svg)](https://coveralls.io/r/sul-dlss/rspec-solr)
|
3
|
+
[![Dependency Status](https://gemnasium.com/sul-dlss/rspec-solr.svg)](https://gemnasium.com/sul-dlss/rspec-solr)
|
2
4
|
|
3
|
-
|
5
|
+
# RSpec Solr
|
4
6
|
|
5
7
|
A Gem to provide RSpec custom matchers to be used with Solr response objects.
|
6
8
|
|
7
|
-
|
9
|
+
## Installation
|
8
10
|
|
9
11
|
Add this line to your application's Gemfile:
|
10
12
|
|
@@ -18,12 +20,13 @@ Or install it yourself as:
|
|
18
20
|
|
19
21
|
$ gem install rspec-solr
|
20
22
|
|
21
|
-
|
23
|
+
## Usage
|
22
24
|
|
23
|
-
See MATCHERS.
|
25
|
+
See `MATCHERS.md` for syntax of supported expectations.
|
24
26
|
|
25
|
-
|
27
|
+
### Examples:
|
26
28
|
|
29
|
+
```ruby
|
27
30
|
it "q of 'Buddhism' should get 8,500-10,500 results" do
|
28
31
|
resp = solr_resp_doc_ids_only({'q'=>'Buddhism'})
|
29
32
|
resp.should have_at_least(8500).documents
|
@@ -45,50 +48,54 @@ See MATCHERS.rdoc for syntax of supported expectations.
|
|
45
48
|
resp.should have_at_least(240).documents
|
46
49
|
resp.should have_the_same_number_of_results_as(solr_resp_doc_ids_only({'q'=>'三国志'}))
|
47
50
|
end
|
51
|
+
```
|
48
52
|
|
49
|
-
|
53
|
+
### How Do I Do That?
|
50
54
|
|
51
55
|
Essentially, you write a bunch of specs that
|
52
56
|
* send a request to your Solr index
|
53
|
-
* wrap the Solr Ruby response into the RSpecSolr::SolrResponseHash (blah = RSpecSolr::SolrResponseHash.new(orig_resp))
|
54
|
-
* utilize the matchers (blah.
|
57
|
+
* wrap the Solr Ruby response into the `RSpecSolr::SolrResponseHash` (`blah = RSpecSolr::SolrResponseHash.new(orig_resp)``)
|
58
|
+
* utilize the matchers (`expect(blah).to have_document("222")``) -- see `MATCHERS.md`
|
55
59
|
|
56
60
|
There is an exemplar project utilizing rspec-solr at https://github.com/sul-dlss/sw_index_tests.
|
57
61
|
|
58
62
|
Besides the specs themselves, it has essentially 4 files to smooth the way.
|
59
63
|
|
60
|
-
|
64
|
+
#### 1. Gemfile
|
61
65
|
Indicate the required gems for bundler
|
62
66
|
|
63
|
-
|
64
|
-
|
65
|
-
gem 'RedCloth' # for textile formatting used in Readme
|
66
|
-
gem 'rake'
|
67
|
+
```ruby
|
67
68
|
gem 'rsolr' # for sending requests to and getting responses from solr
|
68
69
|
gem 'rspec-solr' # for rspec assertions against solr response object
|
70
|
+
```
|
69
71
|
|
70
|
-
|
72
|
+
#### 2. Rakefile
|
71
73
|
Make it easy to run various groups of specs from the command line
|
72
74
|
|
75
|
+
```ruby
|
73
76
|
require 'rspec/core/rake_task'
|
74
77
|
|
75
78
|
desc "run specs expected to pass"
|
76
79
|
RSpec::Core::RakeTask.new(:rspec) do |spec|
|
77
80
|
spec.rspec_opts = ["-c", "-f progress", "-r ./spec/spec_helper.rb"]
|
78
81
|
end
|
82
|
+
```
|
79
83
|
|
80
|
-
|
84
|
+
#### 3. config/solr.yml
|
81
85
|
Your Solr base url goes here
|
82
86
|
|
87
|
+
```yaml
|
83
88
|
test:
|
84
89
|
:url: http://your_solr_baseurl
|
85
90
|
|
86
91
|
dev:
|
87
92
|
:url: http://your_solr_baseurl
|
93
|
+
```
|
88
94
|
|
89
|
-
|
95
|
+
#### 4. spec/spec_helper.rb
|
90
96
|
Do a one time setup of Solr connection, and methods to make it easier to make desired Solr requests
|
91
97
|
|
98
|
+
```ruby
|
92
99
|
require "yaml"
|
93
100
|
require 'rsolr'
|
94
101
|
|
@@ -110,10 +117,12 @@ Do a one time setup of Solr connection, and methods to make it easier to make de
|
|
110
117
|
def solr_response(solr_params, req_handler='select')
|
111
118
|
RSpecSolr::SolrResponseHash.new(@@solr.send_and_receive(req_handler, {:method => :get, :params => solr_params}))
|
112
119
|
end
|
120
|
+
```
|
113
121
|
|
114
|
-
|
122
|
+
#### 4a. a little more magic
|
115
123
|
You might want to add code such as that below to your spec_helper - it can help keep your solr responses small, which makes for easier debugging.
|
116
124
|
|
125
|
+
```ruby
|
117
126
|
# send a GET request to the default Solr request handler with the indicated Solr parameters
|
118
127
|
# @param solr_params [Hash] the key/value pairs to be sent to Solr as HTTP parameters, in addition to
|
119
128
|
# those to get only id fields and no facets in the response
|
@@ -128,19 +137,15 @@ You might want to add code such as that below to your spec_helper - it can help
|
|
128
137
|
def doc_ids_only
|
129
138
|
{'fl'=>'id', 'facet'=>'false'}
|
130
139
|
end
|
131
|
-
|
132
|
-
|
133
|
-
== Ruby Version Compatibility
|
134
|
-
|
135
|
-
This should work with various rubies 1.8.7, but currently some tests expected ordered hashes (though the code itself doesn't require them - just THIS gem's TEST code).
|
140
|
+
```
|
136
141
|
|
137
|
-
|
142
|
+
## Contribute
|
138
143
|
|
139
144
|
I'm currently envisioning helper methods shared somehow - either on the github wikis, or in this gem as exemplars, or in a separate gem, or ...
|
140
145
|
|
141
146
|
Please share yours!
|
142
147
|
|
143
|
-
|
148
|
+
## Contributing
|
144
149
|
|
145
150
|
1. Fork it
|
146
151
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
@@ -148,7 +153,7 @@ Please share yours!
|
|
148
153
|
4. Push to the branch (`git push origin my-new-feature`)
|
149
154
|
5. Create new Pull Request
|
150
155
|
|
151
|
-
|
156
|
+
## Releases
|
152
157
|
- <b>1.0.1</b> fix spec failing in travis due to diff error message in later rspec version
|
153
158
|
- <b>1.0.0</b> declare victory and make 0.2.0 into 1.0.0
|
154
159
|
- <b>0.2.0</b> add facet support have_facet_field(fld_name).with_value(fld_value)
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
2
|
require 'bundler/setup'
|
3
|
-
require
|
3
|
+
require 'bundler/gem_tasks'
|
4
4
|
|
5
5
|
require 'rake'
|
6
6
|
require 'bundler'
|
@@ -9,11 +9,11 @@ begin
|
|
9
9
|
Bundler.setup(:default, :development)
|
10
10
|
rescue Bundler::BundlerError => e
|
11
11
|
$stderr.puts e.message
|
12
|
-
$stderr.puts
|
12
|
+
$stderr.puts 'Run `bundle install` to install missing gems'
|
13
13
|
exit e.status_code
|
14
14
|
end
|
15
15
|
|
16
16
|
Dir.glob('lib/tasks/*.rake').each { |r| import r }
|
17
17
|
|
18
|
-
task :
|
19
|
-
task :
|
18
|
+
task default: :ci
|
19
|
+
task spec: :rspec
|
data/lib/rspec-solr.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
1
|
+
require 'rspec-solr/solr_response_hash'
|
2
|
+
require 'rspec-solr/compare_num_docs_matcher'
|
3
|
+
require 'rspec-solr/have_documents_matcher'
|
4
|
+
require 'rspec-solr/have_facet_field_matcher'
|
5
|
+
require 'rspec-solr/include_documents_matcher'
|
6
6
|
|
7
7
|
module RSpecSolr::Matchers
|
8
|
-
|
9
|
-
end
|
8
|
+
end
|
@@ -1,109 +1,92 @@
|
|
1
1
|
# Custom RSpec Matchers for Solr responses
|
2
2
|
module RSpecSolr::Matchers
|
3
|
-
|
4
|
-
# Determine if the receiver has the same number of Solr docs as the expected
|
5
|
-
# NOTE: this is about the TOTAL number of Solr documents matching the queries, not solely the number of docs in THESE responses
|
6
|
-
def have_the_same_number_of_results_as
|
7
|
-
# Placeholder method for documentation purposes;
|
8
|
-
# the actual method is defined using RSpec's matcher DSL
|
9
|
-
end
|
10
|
-
|
11
|
-
# Determine if the receiver has fewer Solr docs than the expected
|
12
|
-
# NOTE: this is about the TOTAL number of Solr documents matching the queries, not solely the number of docs in THESE responses
|
13
|
-
def have_fewer_results_than
|
14
|
-
# Placeholder method for documentation purposes;
|
15
|
-
# the actual method is defined using RSpec's matcher DSL
|
16
|
-
end
|
17
|
-
|
18
|
-
# Determine if the receiver has more Solr docs than the expected
|
19
|
-
# NOTE: this is about the TOTAL number of Solr documents matching the queries, not solely the number of docs in THESE responses
|
20
|
-
def have_more_results_than
|
21
|
-
# Placeholder method for documentation purposes;
|
22
|
-
# the actual method is defined using RSpec's matcher DSL
|
23
|
-
end
|
24
|
-
|
25
|
-
# this is the lambda used to determine if the receiver (a Solr response object) has the same number of total documents
|
3
|
+
# this is the lambda used to determine if the receiver (a Solr response object) has the same number of total documents
|
26
4
|
# as the expected RSpecSolr::SolrResponseHash
|
27
|
-
def self.same_number_of_results_body
|
28
|
-
lambda
|
5
|
+
def self.same_number_of_results_body
|
6
|
+
lambda do |expected_solr_resp_hash|
|
29
7
|
match do |actual_solr_resp_hash|
|
30
8
|
actual_solr_resp_hash.size == expected_solr_resp_hash.size
|
31
9
|
end
|
32
10
|
|
33
|
-
|
11
|
+
failure_message do |actual_solr_resp_hash|
|
34
12
|
"expected #{actual_solr_resp_hash.size} documents in Solr response #{expected_solr_resp_hash.num_docs_partial_output_str}"
|
35
13
|
end
|
36
|
-
|
37
|
-
|
14
|
+
|
15
|
+
failure_message_when_negated do |actual_solr_resp_hash|
|
38
16
|
"expected (not #{actual_solr_resp_hash.size}) documents in Solr response #{expected_solr_resp_hash.num_docs_partial_output_str}"
|
39
|
-
end
|
40
|
-
|
17
|
+
end
|
18
|
+
|
41
19
|
diffable
|
42
|
-
|
43
|
-
end
|
44
|
-
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# @!method have_the_same_number_of_results_as
|
45
24
|
# Determine if the receiver (a Solr response object) has the same number of total documents as the expected RSpecSolr::SolrResponseHash
|
46
25
|
# NOTE: this is about the TOTAL number of Solr documents matching the queries, not solely the number of docs in THESE responses
|
47
26
|
RSpec::Matchers.define :have_the_same_number_of_results_as, &same_number_of_results_body
|
48
27
|
|
28
|
+
# @!method have_the_same_number_of_documents_as
|
49
29
|
# Determine if the receiver (a Solr response object) has the same number of total documents as the expected RSpecSolr::SolrResponseHash
|
50
30
|
# NOTE: this is about the TOTAL number of Solr documents matching the queries, not solely the number of docs in THESE responses
|
51
31
|
RSpec::Matchers.define :have_the_same_number_of_documents_as, &same_number_of_results_body
|
52
|
-
|
53
|
-
# this is the lambda used to determine if the receiver (a Solr response object) has fewer total documents
|
32
|
+
|
33
|
+
# this is the lambda used to determine if the receiver (a Solr response object) has fewer total documents
|
54
34
|
# than the expected RSpecSolr::SolrResponseHash
|
55
35
|
def self.fewer_results_than_body
|
56
|
-
lambda
|
36
|
+
lambda do |expected_solr_resp_hash|
|
57
37
|
match do |actual_solr_resp_hash|
|
58
38
|
actual_solr_resp_hash.size < expected_solr_resp_hash.size
|
59
39
|
end
|
60
40
|
|
61
|
-
|
41
|
+
failure_message do |actual_solr_resp_hash|
|
62
42
|
"expected more than #{actual_solr_resp_hash.size} documents in Solr response #{expected_solr_resp_hash.num_docs_partial_output_str}"
|
63
43
|
end
|
64
44
|
|
65
|
-
|
45
|
+
failure_message_when_negated do |actual_solr_resp_hash|
|
66
46
|
"expected #{actual_solr_resp_hash.size} or fewer documents in Solr response #{expected_solr_resp_hash.num_docs_partial_output_str}"
|
67
|
-
end
|
47
|
+
end
|
68
48
|
|
69
49
|
diffable
|
70
|
-
|
50
|
+
end
|
71
51
|
end
|
72
|
-
|
52
|
+
|
53
|
+
# @!method have_fewer_results_than
|
73
54
|
# Determine if the receiver (a Solr response object) has fewer total documents than the expected RSpecSolr::SolrResponseHash
|
74
55
|
# NOTE: this is about the TOTAL number of Solr documents matching the queries, not solely the number of docs in THESE responses
|
75
56
|
RSpec::Matchers.define :have_fewer_results_than, &fewer_results_than_body
|
76
57
|
|
58
|
+
# @!method have_fewer_documents_than
|
77
59
|
# Determine if the receiver (a Solr response object) has fewer total documents than the expected RSpecSolr::SolrResponseHash
|
78
60
|
# NOTE: this is about the TOTAL number of Solr documents matching the queries, not solely the number of docs in THESE responses
|
79
61
|
RSpec::Matchers.define :have_fewer_documents_than, &fewer_results_than_body
|
80
62
|
|
81
|
-
# this is the lambda used to determine if the receiver (a Solr response object) has more total documents
|
63
|
+
# this is the lambda used to determine if the receiver (a Solr response object) has more total documents
|
82
64
|
# than the expected RSpecSolr::SolrResponseHash
|
83
65
|
def self.more_results_than_body
|
84
|
-
lambda
|
66
|
+
lambda do |expected_solr_resp_hash|
|
85
67
|
match do |actual_solr_resp_hash|
|
86
68
|
actual_solr_resp_hash.size > expected_solr_resp_hash.size
|
87
69
|
end
|
88
70
|
|
89
|
-
|
71
|
+
failure_message do |actual_solr_resp_hash|
|
90
72
|
"expected fewer than #{actual_solr_resp_hash.size} documents in Solr response #{expected_solr_resp_hash.num_docs_partial_output_str}"
|
91
73
|
end
|
92
74
|
|
93
|
-
|
75
|
+
failure_message_when_negated do |actual_solr_resp_hash|
|
94
76
|
"expected #{actual_solr_resp_hash.size} or more documents in Solr response #{expected_solr_resp_hash.num_docs_partial_output_str}"
|
95
|
-
end
|
77
|
+
end
|
96
78
|
|
97
79
|
diffable
|
98
|
-
|
80
|
+
end
|
99
81
|
end
|
100
82
|
|
83
|
+
# @!method have_more_results_than
|
101
84
|
# Determine if the receiver (a Solr response object) has more total documents than the expected RSpecSolr::SolrResponseHash
|
102
85
|
# NOTE: this is about the TOTAL number of Solr documents matching the queries, not solely the number of docs in THESE responses
|
103
86
|
RSpec::Matchers.define :have_more_results_than, &more_results_than_body
|
104
87
|
|
88
|
+
# @!method have_more_documents_than
|
105
89
|
# Determine if the receiver (a Solr response object) has more total documents than the expected RSpecSolr::SolrResponseHash
|
106
90
|
# NOTE: this is about the TOTAL number of Solr documents matching the queries, not solely the number of docs in THESE responses
|
107
91
|
RSpec::Matchers.define :have_more_documents_than, &more_results_than_body
|
108
|
-
|
109
|
-
end
|
92
|
+
end
|