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[:index]
8
+ index_name = params['index']
9
9
  index = Picky::Indexes[index_name.to_sym]
10
- data = params[:data]
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[:index]
14
+ index_name = params['index']
15
15
  index = Picky::Indexes[index_name.to_sym]
16
- id = params[:data][:id]
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.7
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: &70160585740240 !ruby/object:Gem::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: *70160585740240
24
+ version_requirements: *70173949808360
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: picky-client
27
- requirement: &70160585738100 !ruby/object:Gem::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.7
32
+ version: 4.0.8
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70160585738100
35
+ version_requirements: *70173949807420
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: text
38
- requirement: &70160585737280 !ruby/object:Gem::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: *70160585737280
46
+ version_requirements: *70173949821340
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yajl-ruby
49
- requirement: &70160585735700 !ruby/object:Gem::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: *70160585735700
57
+ version_requirements: *70173949819100
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: activesupport
60
- requirement: &70160585734980 !ruby/object:Gem::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: *70160585734980
68
+ version_requirements: *70173949818100
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: procrastinate
71
- requirement: &70160585749640 !ruby/object:Gem::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: *70160585749640
79
+ version_requirements: *70173949814720
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rack_fast_escape
82
- requirement: &70160585748580 !ruby/object:Gem::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: *70160585748580
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