algoliasearch 1.1.12 → 1.1.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog +8 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +7 -0
- data/README.md +72 -19
- data/algoliasearch.gemspec +6 -3
- data/lib/algolia/client.rb +3 -3
- data/lib/algolia/version.rb +1 -1
- data/lib/algolia/webmock.rb +48 -0
- data/spec/mock_spec.rb +26 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38bb8e365cc6921a1820890441f95ae1941783ce
|
4
|
+
data.tar.gz: 455d9b1dbce92bfac9ded41bf71ac43756a0f434
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2c7e270e4211d32ef496a2ca67f566d646ccf78fe0fc1d055c3cada84f4977162fc7a0604feb0c30ca4379964918686ef7232dc1554fc860a5c4777377eb99f
|
7
|
+
data.tar.gz: 85b6b8642797de0d8a41880f001476127ae0541029ce0e38870ecd12da6ffb047a377075eaba0accd8ae65b2984422307be0cd44120ab1b6d4d366ca917bca0d
|
data/ChangeLog
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -11,6 +11,8 @@ GEM
|
|
11
11
|
backports (3.3.5)
|
12
12
|
builder (3.2.2)
|
13
13
|
coderay (1.0.9)
|
14
|
+
crack (0.4.1)
|
15
|
+
safe_yaml (~> 0.9.0)
|
14
16
|
curb (0.8.5)
|
15
17
|
diff-lcs (1.2.4)
|
16
18
|
ethon (0.6.1)
|
@@ -90,6 +92,7 @@ GEM
|
|
90
92
|
diff-lcs (>= 1.1.3, < 2.0)
|
91
93
|
rspec-mocks (2.14.3)
|
92
94
|
ruby-hmac (0.4.0)
|
95
|
+
safe_yaml (0.9.7)
|
93
96
|
slop (3.4.6)
|
94
97
|
sys-uname (0.9.2)
|
95
98
|
ffi (>= 1.0.0)
|
@@ -108,6 +111,9 @@ GEM
|
|
108
111
|
typhoeus (~> 0.6)
|
109
112
|
typhoeus (0.6.5)
|
110
113
|
ethon (~> 0.6.1)
|
114
|
+
webmock (1.13.0)
|
115
|
+
addressable (>= 2.2.7)
|
116
|
+
crack (>= 0.3.2)
|
111
117
|
websocket (1.0.7)
|
112
118
|
|
113
119
|
PLATFORMS
|
@@ -123,3 +129,4 @@ DEPENDENCIES
|
|
123
129
|
redgreen
|
124
130
|
rspec
|
125
131
|
travis
|
132
|
+
webmock
|
data/README.md
CHANGED
@@ -41,6 +41,7 @@ Table of Content
|
|
41
41
|
1. [Copy or rename an index](#copy-or-rename-an-index)
|
42
42
|
1. [Backup / Retrieve all index content](#backup--retrieve-all-index-content)
|
43
43
|
1. [Logs](#logs)
|
44
|
+
1. [Mock](#mock)
|
44
45
|
|
45
46
|
Setup
|
46
47
|
-------------
|
@@ -103,29 +104,49 @@ Search
|
|
103
104
|
To perform a search, you just need to initialize the index and perform a call to the search function.<br/>
|
104
105
|
You can use the following optional arguments:
|
105
106
|
|
107
|
+
|
108
|
+
### Query parameters
|
109
|
+
|
110
|
+
#### Full Text Search parameters
|
111
|
+
|
112
|
+
* **query**: (string) The instant-search query string, all words of the query are interpreted as prefixes (for example "John Mc" will match "John Mccamey" and "Johnathan Mccamey"). If no query parameter is set, retrieves all objects.
|
113
|
+
* **queryType**: select how the query words are interpreted, it can be one of the following value:
|
114
|
+
* **prefixAll**: all query words are interpreted as prefixes,
|
115
|
+
* **prefixLast**: only the last word is interpreted as a prefix (default behavior),
|
116
|
+
* **prefixNone**: no query word is interpreted as a prefix. This option is not recommended.
|
117
|
+
* **optionalWords**: a string that contains the list of words that should be considered as optional when found in the query. The list of words is comma separated.
|
118
|
+
* **minWordSizefor1Typo**: the minimum number of characters in a query word to accept one typo in this word.<br/>Defaults to 3.
|
119
|
+
* **minWordSizefor2Typos**: the minimum number of characters in a query word to accept two typos in this word.<br/>Defaults to 7.
|
120
|
+
|
121
|
+
#### Pagination parameters
|
122
|
+
|
106
123
|
* **page**: (integer) Pagination parameter used to select the page to retrieve.<br/>Page is zero-based and defaults to 0. Thus, to retrieve the 10th page you need to set `page=9`
|
107
124
|
* **hitsPerPage**: (integer) Pagination parameter used to select the number of hits per page. Defaults to 20.
|
125
|
+
|
126
|
+
#### Geo-search parameters
|
127
|
+
|
128
|
+
* **aroundLatLng**: search for entries around a given latitude/longitude (specified as two floats separated by a comma).<br/>For example `aroundLatLng=47.316669,5.016670`).<br/>You can specify the maximum distance in meters with the **aroundRadius** parameter (in meters) and the precision for ranking with **aroundPrecision** (for example if you set aroundPrecision=100, two objects that are distant of less than 100m will be considered as identical for "geo" ranking parameter).<br/>At indexing, you should specify geoloc of an object with the _geoloc attribute (in the form `{"_geoloc":{"lat":48.853409, "lng":2.348800}}`)
|
129
|
+
* **insideBoundingBox**: search entries inside a given area defined by the two extreme points of a rectangle (defined by 4 floats: p1Lat,p1Lng,p2Lat,p2Lng).<br/>For example `insideBoundingBox=47.3165,4.9665,47.3424,5.0201`).<br/>At indexing, you should specify geoloc of an object with the _geoloc attribute (in the form `{"_geoloc":{"lat":48.853409, "lng":2.348800}}`)
|
130
|
+
|
131
|
+
#### Parameters to control results content
|
108
132
|
* **attributesToRetrieve**: a string that contains the list of object attributes you want to retrieve (let you minimize the answer size).<br/> Attributes are separated with a comma (for example `"name,address"`), you can also use a string array encoding (for example `["name","address"]` ). By default, all attributes are retrieved. You can also use `*` to retrieve all values when an **attributesToRetrieve** setting is specified for your index.
|
109
133
|
* **attributesToHighlight**: a string that contains the list of attributes you want to highlight according to the query. Attributes are separated by a comma. You can also use a string array encoding (for example `["name","address"]`). If an attribute has no match for the query, the raw value is returned. By default all indexed text attributes are highlighted. You can use `*` if you want to highlight all textual attributes. Numerical attributes are not highlighted. A matchLevel is returned for each highlighted attribute and can contain:
|
110
134
|
* **full**: if all the query terms were found in the attribute,
|
111
135
|
* **partial**: if only some of the query terms were found,
|
112
136
|
* **none**: if none of the query terms were found.
|
113
137
|
* **attributesToSnippet**: a string that contains the list of attributes to snippet alongside the number of words to return (syntax is `attributeName:nbWords`). Attributes are separated by a comma (Example: `attributesToSnippet=name:10,content:10`). <br/>You can also use a string array encoding (Example: `attributesToSnippet: ["name:10","content:10"]`). By default no snippet is computed.
|
114
|
-
* **minWordSizefor1Typo**: the minimum number of characters in a query word to accept one typo in this word.<br/>Defaults to 3.
|
115
|
-
* **minWordSizefor2Typos**: the minimum number of characters in a query word to accept two typos in this word.<br/>Defaults to 7.
|
116
138
|
* **getRankingInfo**: if set to 1, the result hits will contain ranking information in **_rankingInfo** attribute.
|
117
|
-
|
118
|
-
|
139
|
+
|
140
|
+
#### Numeric search parameters
|
119
141
|
* **numericFilters**: a string that contains the list of numeric filters you want to apply separated by a comma. The syntax of one filter is `attributeName` followed by `operand` followed by `value`. Supported operands are `<`, `<=`, `=`, `>` and `>=`.
|
120
142
|
You can have multiple conditions on one attribute like for example `numericFilters=price>100,price<1000`. You can also use a string array encoding (for example `numericFilters: ["price>100","price<1000"]`).
|
121
|
-
|
143
|
+
|
144
|
+
#### Category search parameters
|
145
|
+
* **tagFilters**: filter the query by a set of tags. You can AND tags by separating them by commas. To OR tags, you must add parentheses. For example, `tags=tag1,(tag2,tag3)` means *tag1 AND (tag2 OR tag3)*. You can also use a string array encoding, for example `tagFilters: ["tag1",["tag2","tag3"]]` means *tag1 AND (tag2 OR tag3)*.<br/>At indexing, tags should be added in the **_tags** attribute of objects (for example `{"_tags":["tag1","tag2"]}`).
|
146
|
+
|
147
|
+
#### Faceting parameters
|
122
148
|
* **facetFilters**: filter the query by a list of facets. Facets are separated by commas and each facet is encoded as `attributeName:value`. For example: `facetFilters=category:Book,author:John%20Doe`. You can also use a string array encoding (for example `["category:Book","author:John%20Doe"]`).
|
123
149
|
* **facets**: List of object attributes that you want to use for faceting. <br/>Attributes are separated with a comma (for example `"category,author"` ). You can also use a JSON string array encoding (for example `["category","author"]` ). Only attributes that have been added in **attributesForFaceting** index setting can be used in this parameter. You can also use `*` to perform faceting on all attributes specified in **attributesForFaceting**.
|
124
|
-
* **queryType**: select how the query words are interpreted, it can be one of the following value:
|
125
|
-
* **prefixAll**: all query words are interpreted as prefixes,
|
126
|
-
* **prefixLast**: only the last word is interpreted as a prefix (default behavior),
|
127
|
-
* **prefixNone**: no query word is interpreted as a prefix. This option is not recommended.
|
128
|
-
* **optionalWords**: a string that contains the list of words that should be considered as optional when found in the query. The list of words is comma separated.
|
129
150
|
|
130
151
|
```ruby
|
131
152
|
index = Algolia::Index.new("contacts")
|
@@ -247,12 +268,7 @@ Index Settings
|
|
247
268
|
|
248
269
|
You can retrieve all settings using the `getSettings` function. The result will contains the following attributes:
|
249
270
|
|
250
|
-
|
251
|
-
* **minWordSizefor2Typos**: (integer) the minimum number of characters to accept two typos (default = 7).
|
252
|
-
* **hitsPerPage**: (integer) the number of hits per page (default = 10).
|
253
|
-
* **attributesToRetrieve**: (array of strings) default list of attributes to retrieve in objects. If set to null, all attributes are retrieved.
|
254
|
-
* **attributesToHighlight**: (array of strings) default list of attributes to highlight. If set to null, all indexed attributes are highlighted.
|
255
|
-
* **attributesToSnippet**: (array of strings) default list of attributes to snippet alongside the number of words to return (syntax is 'attributeName:nbWords')<br/>By default no snippet is computed. If set to null, no snippet is computed.
|
271
|
+
#### Indexing parameters
|
256
272
|
* **attributesToIndex**: (array of strings) the list of fields you want to index.<br/>If set to null, all textual and numerical attributes of your objects are indexed, but you should update it to get optimal results.<br/>This parameter has two important uses:
|
257
273
|
* *Limit the attributes to index*.<br/>For example if you store a binary image in base64, you want to store it and be able to retrieve it but you don't want to search in the base64 string.
|
258
274
|
* *Control part of the ranking*.<br/>(see the ranking parameter for full explanation) Matches in attributes at the beginning of the list will be considered more important than matches in attributes further down the list. In one attribute, matching text at the beginning of the attribute will be considered more important than text after, you can disable this behavior if you add your attribute inside `unordered(AttributeName)`, for example `attributesToIndex: ["title", "unordered(text)"]`.
|
@@ -272,6 +288,14 @@ For example `"customRanking" => ["desc(population)", "asc(name)"]`
|
|
272
288
|
* **prefixAll**: all query words are interpreted as prefixes,
|
273
289
|
* **prefixLast**: only the last word is interpreted as a prefix (default behavior),
|
274
290
|
* **prefixNone**: no query word is interpreted as a prefix. This option is not recommended.
|
291
|
+
|
292
|
+
#### Default query parameters (can be overwrite by query)
|
293
|
+
* **minWordSizefor1Typo**: (integer) the minimum number of characters to accept one typo (default = 3).
|
294
|
+
* **minWordSizefor2Typos**: (integer) the minimum number of characters to accept two typos (default = 7).
|
295
|
+
* **hitsPerPage**: (integer) the number of hits per page (default = 10).
|
296
|
+
* **attributesToRetrieve**: (array of strings) default list of attributes to retrieve in objects. If set to null, all attributes are retrieved.
|
297
|
+
* **attributesToHighlight**: (array of strings) default list of attributes to highlight. If set to null, all indexed attributes are highlighted.
|
298
|
+
* **attributesToSnippet**: (array of strings) default list of attributes to snippet alongside the number of words to return (syntax is 'attributeName:nbWords')<br/>By default no snippet is computed. If set to null, no snippet is computed.
|
275
299
|
* **highlightPreTag**: (string) Specify the string that is inserted before the highlighted parts in the query result (default to "<em>").
|
276
300
|
* **highlightPostTag**: (string) Specify the string that is inserted after the highlighted parts in the query result (default to "</em>").
|
277
301
|
* **optionalWords**: (array of strings) Specify a list of words that should be considered as optional when found in the query.
|
@@ -358,7 +382,7 @@ Example that update only the `firstname` attribute:
|
|
358
382
|
res = index.partial_update_objects([{"firstname" => "Jimmie",
|
359
383
|
"objectID" => "SFO"},
|
360
384
|
{"firstname" => "Warren",
|
361
|
-
"objectID" => "myID2"}])
|
385
|
+
"objectID" => "myID2"}])
|
362
386
|
```
|
363
387
|
|
364
388
|
Security / User API Keys
|
@@ -455,9 +479,9 @@ This method retrieve 1000 objects by API call and support pagination.
|
|
455
479
|
|
456
480
|
```ruby
|
457
481
|
# Get first page
|
458
|
-
puts index.browse(0)
|
482
|
+
puts index.browse(0)
|
459
483
|
# Get second page
|
460
|
-
puts index.browse(1)
|
484
|
+
puts index.browse(1)
|
461
485
|
```
|
462
486
|
|
463
487
|
Logs
|
@@ -484,3 +508,32 @@ puts Algolia.get_logs.to_json
|
|
484
508
|
# Get last 100 log entries
|
485
509
|
puts Algolia.get_logs(0, 100).to_json
|
486
510
|
```
|
511
|
+
|
512
|
+
Mock
|
513
|
+
-------------
|
514
|
+
|
515
|
+
For testing purpose, you may want to mock Algolia's API calls. We provide a [WebMock](https://github.com/bblimke/webmock) configuration that you can use including `algolia/webmock`:
|
516
|
+
|
517
|
+
```ruby
|
518
|
+
require 'algolia/webmock'
|
519
|
+
|
520
|
+
describe 'With a mocked client' do
|
521
|
+
|
522
|
+
before(:each) do
|
523
|
+
WebMock.enable!
|
524
|
+
end
|
525
|
+
|
526
|
+
it "shouldn't perform any API calls here" do
|
527
|
+
index = Algolia::Index.new("friends")
|
528
|
+
index.add_object!({ :name => "John Doe", :email => "john@doe.org" })
|
529
|
+
index.search('').should == {} # mocked
|
530
|
+
index.clear
|
531
|
+
index.delete
|
532
|
+
end
|
533
|
+
|
534
|
+
after(:each) do
|
535
|
+
WebMock.disable!
|
536
|
+
end
|
537
|
+
|
538
|
+
end
|
539
|
+
```
|
data/algoliasearch.gemspec
CHANGED
@@ -2,14 +2,15 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: algoliasearch 1.1.13 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
8
|
s.name = "algoliasearch"
|
8
|
-
s.version = "1.1.
|
9
|
+
s.version = "1.1.13"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
12
|
s.authors = ["Algolia"]
|
12
|
-
s.date = "2013-12-
|
13
|
+
s.date = "2013-12-10"
|
13
14
|
s.description = "A simple Ruby client for the algolia.com REST API"
|
14
15
|
s.email = "contact@algolia.com"
|
15
16
|
s.extra_rdoc_files = [
|
@@ -33,14 +34,16 @@ Gem::Specification.new do |s|
|
|
33
34
|
"lib/algolia/index.rb",
|
34
35
|
"lib/algolia/protocol.rb",
|
35
36
|
"lib/algolia/version.rb",
|
37
|
+
"lib/algolia/webmock.rb",
|
36
38
|
"lib/algoliasearch.rb",
|
37
39
|
"spec/client_spec.rb",
|
40
|
+
"spec/mock_spec.rb",
|
38
41
|
"spec/spec_helper.rb"
|
39
42
|
]
|
40
43
|
s.homepage = "http://github.com/algolia/algoliasearch-client-ruby"
|
41
44
|
s.licenses = ["MIT"]
|
42
45
|
s.require_paths = ["lib"]
|
43
|
-
s.rubygems_version = "2.
|
46
|
+
s.rubygems_version = "2.1.11"
|
44
47
|
s.summary = "A simple Ruby client for the algolia.com REST API"
|
45
48
|
|
46
49
|
if s.respond_to? :specification_version then
|
data/lib/algolia/client.rb
CHANGED
@@ -76,8 +76,8 @@ module Algolia
|
|
76
76
|
|
77
77
|
# this method returns a thread-local array of sessions
|
78
78
|
def thread_local_hosts
|
79
|
-
if Thread.current[:
|
80
|
-
Thread.current[:
|
79
|
+
if Thread.current[:algolia_hosts].nil?
|
80
|
+
Thread.current[:algolia_hosts] = hosts.map do |host|
|
81
81
|
hinfo = {}
|
82
82
|
hinfo["base_url"] = "http#{@ssl ? 's' : ''}://#{host}"
|
83
83
|
hinfo["host"] = host
|
@@ -92,7 +92,7 @@ module Algolia
|
|
92
92
|
hinfo
|
93
93
|
end
|
94
94
|
end
|
95
|
-
Thread.current[:
|
95
|
+
Thread.current[:algolia_hosts]
|
96
96
|
end
|
97
97
|
|
98
98
|
end
|
data/lib/algolia/version.rb
CHANGED
@@ -0,0 +1,48 @@
|
|
1
|
+
begin
|
2
|
+
require 'webmock'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'WebMock was not found, please add "gem \'webmock\'" to your Gemfile.'
|
5
|
+
exit 1
|
6
|
+
end
|
7
|
+
|
8
|
+
# disable by default
|
9
|
+
WebMock.disable!
|
10
|
+
|
11
|
+
# list indexes
|
12
|
+
WebMock.stub_request(:get, /.*\.algolia\.io\/1\/indexes/).to_return(:body => '{ "items": [] }')
|
13
|
+
# query index
|
14
|
+
WebMock.stub_request(:get, /.*\.algolia\.io\/1\/indexes\/[^\/]+/).to_return(:body => '{}')
|
15
|
+
WebMock.stub_request(:post, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/query/).to_return(:body => '{}')
|
16
|
+
# delete index
|
17
|
+
WebMock.stub_request(:delete, /.*\.algolia\.io\/1\/indexes\/[^\/]+/).to_return(:body => '{ "taskID": 42 }')
|
18
|
+
# clear index
|
19
|
+
WebMock.stub_request(:post, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/clear/).to_return(:body => '{ "taskID": 42 }')
|
20
|
+
# add object
|
21
|
+
WebMock.stub_request(:post, /.*\.algolia\.io\/1\/indexes\/[^\/]+/).to_return(:body => '{ "taskID": 42 }')
|
22
|
+
# save object
|
23
|
+
WebMock.stub_request(:put, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/[^\/]+/).to_return(:body => '{ "taskID": 42 }')
|
24
|
+
# partial update
|
25
|
+
WebMock.stub_request(:put, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/[^\/]+\/partial/).to_return(:body => '{ "taskID": 42 }')
|
26
|
+
# get object
|
27
|
+
WebMock.stub_request(:get, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/[^\/]+/).to_return(:body => '{}')
|
28
|
+
# delete object
|
29
|
+
WebMock.stub_request(:delete, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/[^\/]+/).to_return(:body => '{ "taskID": 42 }')
|
30
|
+
# batch
|
31
|
+
WebMock.stub_request(:post, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/batch/).to_return(:body => '{ "taskID": 42 }')
|
32
|
+
# settings
|
33
|
+
WebMock.stub_request(:get, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/settings/).to_return(:body => '{}')
|
34
|
+
WebMock.stub_request(:put, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/settings/).to_return(:body => '{ "taskID": 42 }')
|
35
|
+
# browse
|
36
|
+
WebMock.stub_request(:get, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/browse/).to_return(:body => '{}')
|
37
|
+
# operations
|
38
|
+
WebMock.stub_request(:post, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/operation/).to_return(:body => '{ "taskID": 42 }')
|
39
|
+
# tasks
|
40
|
+
WebMock.stub_request(:get, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/task\/[^\/]+/).to_return(:body => '{ "status": "published" }')
|
41
|
+
# index keys
|
42
|
+
WebMock.stub_request(:post, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/keys/).to_return(:body => '{ }')
|
43
|
+
WebMock.stub_request(:get, /.*\.algolia\.io\/1\/indexes\/[^\/]+\/keys/).to_return(:body => '{ "keys": [] }')
|
44
|
+
# global keys
|
45
|
+
WebMock.stub_request(:post, /.*\.algolia\.io\/1\/keys/).to_return(:body => '{ }')
|
46
|
+
WebMock.stub_request(:get, /.*\.algolia\.io\/1\/keys/).to_return(:body => '{ "keys": [] }')
|
47
|
+
WebMock.stub_request(:get, /.*\.algolia\.io\/1\/keys\/[^\/]+/).to_return(:body => '{ }')
|
48
|
+
WebMock.stub_request(:delete, /.*\.algolia\.io\/1\/keys\/[^\/]+/).to_return(:body => '{ }')
|
data/spec/mock_spec.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
|
2
|
+
|
3
|
+
require 'algolia/webmock'
|
4
|
+
|
5
|
+
describe 'With a mocked client' do
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
WebMock.enable!
|
9
|
+
Thread.current[:algolia_hosts] = nil # reset Curb::Easy objects
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should add a simple object" do
|
13
|
+
index = Algolia::Index.new("friends")
|
14
|
+
index.add_object!({ :name => "John Doe", :email => "john@doe.org" })
|
15
|
+
index.search('').should == {} # mocked
|
16
|
+
index.list_user_keys
|
17
|
+
index.browse
|
18
|
+
index.clear
|
19
|
+
index.delete
|
20
|
+
end
|
21
|
+
|
22
|
+
after(:each) do
|
23
|
+
WebMock.disable!
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: algoliasearch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Algolia
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-12-
|
11
|
+
date: 2013-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curb
|
@@ -90,8 +90,10 @@ files:
|
|
90
90
|
- lib/algolia/index.rb
|
91
91
|
- lib/algolia/protocol.rb
|
92
92
|
- lib/algolia/version.rb
|
93
|
+
- lib/algolia/webmock.rb
|
93
94
|
- lib/algoliasearch.rb
|
94
95
|
- spec/client_spec.rb
|
96
|
+
- spec/mock_spec.rb
|
95
97
|
- spec/spec_helper.rb
|
96
98
|
homepage: http://github.com/algolia/algoliasearch-client-ruby
|
97
99
|
licenses:
|
@@ -113,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
115
|
version: '0'
|
114
116
|
requirements: []
|
115
117
|
rubyforge_project:
|
116
|
-
rubygems_version: 2.
|
118
|
+
rubygems_version: 2.1.11
|
117
119
|
signing_key:
|
118
120
|
specification_version: 4
|
119
121
|
summary: A simple Ruby client for the algolia.com REST API
|