picky 4.0.7 → 4.0.8
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.
@@ -5,15 +5,16 @@ module Picky
|
|
5
5
|
|
6
6
|
def self.extended base
|
7
7
|
base.post '/' do
|
8
|
-
index_name = params[
|
8
|
+
index_name = params['index']
|
9
9
|
index = Picky::Indexes[index_name.to_sym]
|
10
|
-
data = params[
|
11
|
-
index.replace_from data if data
|
10
|
+
data = params['data']
|
11
|
+
index.replace_from Yajl::Parser.parse(data) if data
|
12
12
|
end
|
13
13
|
base.delete '/' do
|
14
|
-
index_name = params[
|
14
|
+
index_name = params['index']
|
15
15
|
index = Picky::Indexes[index_name.to_sym]
|
16
|
-
|
16
|
+
data = Yajl::Parser.parse params['data']
|
17
|
+
id = data['id']
|
17
18
|
index.remove id if id
|
18
19
|
end
|
19
20
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'Yajl'
|
2
|
+
require 'sinatra'
|
3
|
+
require 'picky-client'
|
4
|
+
require 'spec_helper'
|
5
|
+
|
6
|
+
describe 'Sinatra Index Actions' do
|
7
|
+
|
8
|
+
# This is the application that is tested.
|
9
|
+
#
|
10
|
+
class MyPickyServer < Sinatra::Base
|
11
|
+
extend Picky::Sinatra::IndexActions
|
12
|
+
|
13
|
+
data = Picky::Index.new :index do
|
14
|
+
category :name
|
15
|
+
category :surname
|
16
|
+
end
|
17
|
+
people = Picky::Search.new data
|
18
|
+
|
19
|
+
get '/people' do
|
20
|
+
results = people.search params[:query], params[:ids] || 20, params[:offset] || 0
|
21
|
+
results.to_json
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'updating' do
|
26
|
+
before(:each) do
|
27
|
+
Picky::Indexes.clear
|
28
|
+
end
|
29
|
+
let(:request) { ::Rack::MockRequest.new MyPickyServer }
|
30
|
+
it 'should update the index correctly' do
|
31
|
+
request.post('/', params: { index: 'index', data: %Q{{ "id":"1", "name":"Florian", "surname":"Hanke" }} })
|
32
|
+
|
33
|
+
results = Yajl::Parser.parse request.get('/people', params: { query: 'florian' }).body
|
34
|
+
results['total'].should == 1
|
35
|
+
|
36
|
+
request.post('/', params: { index: 'index', data: %Q{{ "id":"2", "name":"Florian", "surname":"Meier" }} })
|
37
|
+
|
38
|
+
results = Yajl::Parser.parse request.get('/people', params: { query: 'florian' }).body
|
39
|
+
results['total'].should == 2
|
40
|
+
end
|
41
|
+
it 'should delete entries from the index correctly' do
|
42
|
+
request.post('/', params: { index: 'index', data: %Q{{ "id":"1", "name":"Florian", "surname":"Hanke" }} })
|
43
|
+
request.post('/', params: { index: 'index', data: %Q{{ "id":"2", "name":"Florian", "surname":"Meier" }} })
|
44
|
+
|
45
|
+
results = Yajl::Parser.parse request.get('/people', params: { query: 'florian' }).body
|
46
|
+
results['total'].should == 2
|
47
|
+
|
48
|
+
request.delete('/', params: { index: 'index', data: %Q{{ "id":"1" }} })
|
49
|
+
|
50
|
+
results = Yajl::Parser.parse request.get('/people', params: { query: 'florian' }).body
|
51
|
+
results['total'].should == 1
|
52
|
+
end
|
53
|
+
it 'should have no problem with a superfluous delete' do
|
54
|
+
request.delete('/', params: { index: 'index', data: %Q{{ "id":"1" }} })
|
55
|
+
|
56
|
+
results = Yajl::Parser.parse request.get('/people', params: { query: 'florian' }).body
|
57
|
+
results['total'].should == 0
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: picky
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-01-06 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70173949808360 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,21 +21,21 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70173949808360
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: picky-client
|
27
|
-
requirement: &
|
27
|
+
requirement: &70173949807420 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 4.0.
|
32
|
+
version: 4.0.8
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70173949807420
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: text
|
38
|
-
requirement: &
|
38
|
+
requirement: &70173949821340 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70173949821340
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: yajl-ruby
|
49
|
-
requirement: &
|
49
|
+
requirement: &70173949819100 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70173949819100
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: activesupport
|
60
|
-
requirement: &
|
60
|
+
requirement: &70173949818100 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '3.0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70173949818100
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: procrastinate
|
71
|
-
requirement: &
|
71
|
+
requirement: &70173949814720 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0.4'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70173949814720
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rack_fast_escape
|
82
|
-
requirement: &
|
82
|
+
requirement: &70173949830000 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70173949830000
|
91
91
|
description: Fast Ruby semantic text search engine with comfortable single field interface.
|
92
92
|
email: florian.hanke+picky@gmail.com
|
93
93
|
executables:
|
@@ -253,6 +253,7 @@ files:
|
|
253
253
|
- spec/functional/regression_spec.rb
|
254
254
|
- spec/functional/speed_spec.rb
|
255
255
|
- spec/functional/terminate_early_spec.rb
|
256
|
+
- spec/integration/sinatra_index_actions_spec.rb
|
256
257
|
- spec/lib/analytics_spec.rb
|
257
258
|
- spec/lib/analyzer_spec.rb
|
258
259
|
- spec/lib/api/category/partial_spec.rb
|
@@ -397,6 +398,7 @@ test_files:
|
|
397
398
|
- spec/functional/regression_spec.rb
|
398
399
|
- spec/functional/speed_spec.rb
|
399
400
|
- spec/functional/terminate_early_spec.rb
|
401
|
+
- spec/integration/sinatra_index_actions_spec.rb
|
400
402
|
- spec/lib/analytics_spec.rb
|
401
403
|
- spec/lib/analyzer_spec.rb
|
402
404
|
- spec/lib/api/category/partial_spec.rb
|