sunspot 2.2.7 → 2.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rspec +2 -0
- data/Appraisals +7 -0
- data/Gemfile +0 -8
- data/gemfiles/.gitkeep +0 -0
- data/lib/sunspot/dsl/scope.rb +6 -1
- data/lib/sunspot/field.rb +11 -0
- data/lib/sunspot/field_factory.rb +6 -2
- data/lib/sunspot/query/bbox.rb +5 -1
- data/lib/sunspot/query/restriction.rb +11 -0
- data/lib/sunspot/search/hit_enumerable.rb +4 -1
- data/lib/sunspot/search/standard_search.rb +2 -3
- data/lib/sunspot/version.rb +1 -1
- data/spec/api/adapters_spec.rb +19 -19
- data/spec/api/batcher_spec.rb +15 -15
- data/spec/api/binding_spec.rb +3 -3
- data/spec/api/class_set_spec.rb +3 -3
- data/spec/api/hit_enumerable_spec.rb +32 -9
- data/spec/api/indexer/attributes_spec.rb +31 -31
- data/spec/api/indexer/batch_spec.rb +8 -7
- data/spec/api/indexer/dynamic_fields_spec.rb +8 -8
- data/spec/api/indexer/fixed_fields_spec.rb +12 -12
- data/spec/api/indexer/fulltext_spec.rb +8 -8
- data/spec/api/indexer/removal_spec.rb +14 -14
- data/spec/api/indexer_spec.rb +2 -2
- data/spec/api/query/advanced_manipulation_examples.rb +3 -3
- data/spec/api/query/connectives_examples.rb +26 -14
- data/spec/api/query/dsl_spec.rb +17 -9
- data/spec/api/query/dynamic_fields_examples.rb +18 -18
- data/spec/api/query/faceting_examples.rb +62 -62
- data/spec/api/query/fulltext_examples.rb +56 -55
- data/spec/api/query/function_spec.rb +26 -26
- data/spec/api/query/geo_examples.rb +6 -6
- data/spec/api/query/group_spec.rb +6 -6
- data/spec/api/query/highlighting_examples.rb +26 -26
- data/spec/api/query/join_spec.rb +2 -2
- data/spec/api/query/more_like_this_spec.rb +29 -29
- data/spec/api/query/ordering_pagination_examples.rb +25 -25
- data/spec/api/query/scope_examples.rb +39 -39
- data/spec/api/query/spatial_examples.rb +3 -3
- data/spec/api/query/spellcheck_examples.rb +3 -3
- data/spec/api/query/standard_spec.rb +1 -1
- data/spec/api/query/stats_examples.rb +8 -8
- data/spec/api/query/text_field_scoping_examples.rb +5 -5
- data/spec/api/query/types_spec.rb +4 -4
- data/spec/api/search/cursor_paginated_collection_spec.rb +12 -12
- data/spec/api/search/dynamic_fields_spec.rb +4 -4
- data/spec/api/search/faceting_spec.rb +55 -52
- data/spec/api/search/highlighting_spec.rb +7 -7
- data/spec/api/search/hits_spec.rb +29 -29
- data/spec/api/search/paginated_collection_spec.rb +18 -18
- data/spec/api/search/results_spec.rb +13 -13
- data/spec/api/search/search_spec.rb +3 -3
- data/spec/api/search/stats_spec.rb +10 -10
- data/spec/api/session_proxy/class_sharding_session_proxy_spec.rb +19 -18
- data/spec/api/session_proxy/id_sharding_session_proxy_spec.rb +9 -9
- data/spec/api/session_proxy/master_slave_session_proxy_spec.rb +10 -6
- data/spec/api/session_proxy/retry_5xx_session_proxy_spec.rb +10 -10
- data/spec/api/session_proxy/sharding_session_proxy_spec.rb +14 -13
- data/spec/api/session_proxy/silent_fail_session_proxy_spec.rb +2 -2
- data/spec/api/session_proxy/spec_helper.rb +1 -1
- data/spec/api/session_proxy/thread_local_session_proxy_spec.rb +9 -5
- data/spec/api/session_spec.rb +42 -42
- data/spec/api/sunspot_spec.rb +4 -4
- data/spec/integration/atomic_updates_spec.rb +25 -11
- data/spec/integration/dynamic_fields_spec.rb +10 -10
- data/spec/integration/faceting_spec.rb +39 -39
- data/spec/integration/field_grouping_spec.rb +16 -16
- data/spec/integration/field_lists_spec.rb +41 -0
- data/spec/integration/geospatial_spec.rb +19 -8
- data/spec/integration/highlighting_spec.rb +5 -5
- data/spec/integration/indexing_spec.rb +5 -5
- data/spec/integration/keyword_search_spec.rb +47 -45
- data/spec/integration/local_search_spec.rb +4 -4
- data/spec/integration/more_like_this_spec.rb +7 -7
- data/spec/integration/scoped_search_spec.rb +107 -107
- data/spec/integration/spellcheck_spec.rb +52 -7
- data/spec/integration/stats_spec.rb +10 -10
- data/spec/integration/stored_fields_spec.rb +1 -1
- data/spec/integration/test_pagination.rb +4 -4
- data/spec/integration/unicode_spec.rb +1 -1
- data/spec/mocks/post.rb +5 -1
- data/spec/spec_helper.rb +11 -6
- data/sunspot.gemspec +3 -1
- metadata +40 -7
@@ -9,8 +9,8 @@ describe Sunspot::SessionProxy::ClassShardingSessionProxy do
|
|
9
9
|
it "should delegate #{method} to appropriate shard" do
|
10
10
|
post = Post.new
|
11
11
|
photo = Photo.new
|
12
|
-
@proxy.post_session.
|
13
|
-
@proxy.photo_session.
|
12
|
+
expect(@proxy.post_session).to receive(method).with([post])
|
13
|
+
expect(@proxy.photo_session).to receive(method).with([photo])
|
14
14
|
@proxy.send(method, post)
|
15
15
|
@proxy.send(method, photo)
|
16
16
|
end
|
@@ -18,14 +18,14 @@ describe Sunspot::SessionProxy::ClassShardingSessionProxy do
|
|
18
18
|
|
19
19
|
[:remove_by_id, :remove_by_id!].each do |method|
|
20
20
|
it "should delegate #{method} to appropriate shard" do
|
21
|
-
@proxy.post_session.
|
22
|
-
@proxy.photo_session.
|
21
|
+
expect(@proxy.post_session).to receive(method).with(Post, [1])
|
22
|
+
expect(@proxy.photo_session).to receive(method).with(Photo, [1])
|
23
23
|
@proxy.send(method, Post, 1)
|
24
24
|
@proxy.send(method, Photo, 1)
|
25
25
|
end
|
26
26
|
it "should delegate #{method} to appropriate shard given ids" do
|
27
|
-
@proxy.post_session.
|
28
|
-
@proxy.photo_session.
|
27
|
+
expect(@proxy.post_session).to receive(method).with(Post, [1, 2])
|
28
|
+
expect(@proxy.photo_session).to receive(method).with(Photo, [1, 2])
|
29
29
|
@proxy.send(method, Post, 1, 2)
|
30
30
|
@proxy.send(method, Photo, [1, 2])
|
31
31
|
end
|
@@ -33,15 +33,15 @@ describe Sunspot::SessionProxy::ClassShardingSessionProxy do
|
|
33
33
|
|
34
34
|
[:remove_all, :remove_all!].each do |method|
|
35
35
|
it "should delegate #{method} with argument to appropriate shard" do
|
36
|
-
@proxy.post_session.
|
37
|
-
@proxy.photo_session.
|
36
|
+
expect(@proxy.post_session).to receive(method).with(Post)
|
37
|
+
expect(@proxy.photo_session).to receive(method).with(Photo)
|
38
38
|
@proxy.send(method, Post)
|
39
39
|
@proxy.send(method, Photo)
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should delegate #{method} without argument to all shards" do
|
43
|
-
@proxy.post_session.
|
44
|
-
@proxy.photo_session.
|
43
|
+
expect(@proxy.post_session).to receive(method)
|
44
|
+
expect(@proxy.photo_session).to receive(method)
|
45
45
|
@proxy.send(method)
|
46
46
|
end
|
47
47
|
end
|
@@ -49,42 +49,43 @@ describe Sunspot::SessionProxy::ClassShardingSessionProxy do
|
|
49
49
|
[:commit, :commit_if_dirty, :commit_if_delete_dirty, :optimize].each do |method|
|
50
50
|
it "should delegate #{method} to all sessions" do
|
51
51
|
[@proxy.post_session, @proxy.photo_session].each do |session|
|
52
|
-
session.
|
52
|
+
expect(session).to receive(method)
|
53
53
|
end
|
54
54
|
@proxy.send(method)
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
58
|
it "should not support the :batch method" do
|
59
|
-
|
59
|
+
expect { @proxy.batch }.to raise_error(Sunspot::SessionProxy::NotSupportedError)
|
60
60
|
end
|
61
61
|
|
62
62
|
it "should delegate new_search to search session, adding in shards parameter" do
|
63
63
|
search = @proxy.new_search(Post)
|
64
|
-
search.query[:shards].
|
64
|
+
expect(search.query[:shards]).to eq(
|
65
65
|
'http://photos.solr.local/solr,http://posts.solr.local/solr'
|
66
|
+
)
|
66
67
|
end
|
67
68
|
|
68
69
|
it "should delegate search to search session, adding in shards parameter" do
|
69
70
|
@proxy.search(Post)
|
70
|
-
connection.
|
71
|
+
expect(connection).to have_last_search_with(
|
71
72
|
:shards => 'http://photos.solr.local/solr,http://posts.solr.local/solr'
|
72
73
|
)
|
73
74
|
end
|
74
75
|
|
75
76
|
[:dirty, :delete_dirty].each do |method|
|
76
77
|
it "should be dirty if any of the sessions are dirty" do
|
77
|
-
@proxy.post_session.
|
78
|
-
@proxy.
|
78
|
+
allow(@proxy.post_session).to receive(:"#{method}?").and_return(true)
|
79
|
+
expect(@proxy).to send("be_#{method}")
|
79
80
|
end
|
80
81
|
|
81
82
|
it "should not be dirty if none of the sessions are dirty" do
|
82
|
-
@proxy.
|
83
|
+
expect(@proxy).not_to send("be_#{method}")
|
83
84
|
end
|
84
85
|
end
|
85
86
|
|
86
87
|
it "should raise a NotSupportedError when :config is called" do
|
87
|
-
|
88
|
+
expect { @proxy.config }.to raise_error(Sunspot::SessionProxy::NotSupportedError)
|
88
89
|
end
|
89
90
|
|
90
91
|
it_should_behave_like 'session proxy'
|
@@ -10,8 +10,8 @@ describe Sunspot::SessionProxy::ShardingSessionProxy do
|
|
10
10
|
[:index, :index!, :remove, :remove!].each do |method|
|
11
11
|
it "should delegate #{method} to appropriate shard" do
|
12
12
|
posts = [Post.new(:id => 2), Post.new(:id => 1)]
|
13
|
-
@proxy.sessions[0].
|
14
|
-
@proxy.sessions[1].
|
13
|
+
expect(@proxy.sessions[0]).to receive(method).with([posts[0]])
|
14
|
+
expect(@proxy.sessions[1]).to receive(method).with([posts[1]])
|
15
15
|
@proxy.send(method, posts[0])
|
16
16
|
@proxy.send(method, posts[1])
|
17
17
|
end
|
@@ -19,21 +19,21 @@ describe Sunspot::SessionProxy::ShardingSessionProxy do
|
|
19
19
|
|
20
20
|
[:remove_by_id, :remove_by_id!].each do |method|
|
21
21
|
it "should delegate #{method} to appropriate session" do
|
22
|
-
@proxy.sessions[1].
|
23
|
-
@proxy.sessions[0].
|
24
|
-
@proxy.sessions[1].
|
22
|
+
expect(@proxy.sessions[1]).to receive(method).with(Post, [3])
|
23
|
+
expect(@proxy.sessions[0]).to receive(method).with(Post, [2])
|
24
|
+
expect(@proxy.sessions[1]).to receive(method).with(Post, [1])
|
25
25
|
@proxy.send(method, Post, 1)
|
26
26
|
@proxy.send(method, Post, 2)
|
27
27
|
@proxy.send(method, Post, 3)
|
28
28
|
end
|
29
29
|
it "should delegate #{method} to appropriate session given splatted index ids" do
|
30
|
-
@proxy.sessions[0].
|
31
|
-
@proxy.sessions[1].
|
30
|
+
expect(@proxy.sessions[0]).to receive(method).with(Post, [2])
|
31
|
+
expect(@proxy.sessions[1]).to receive(method).with(Post, [1, 3])
|
32
32
|
@proxy.send(method, Post, 1, 2, 3)
|
33
33
|
end
|
34
34
|
it "should delegate #{method} to appropriate session given array of index ids" do
|
35
|
-
@proxy.sessions[0].
|
36
|
-
@proxy.sessions[1].
|
35
|
+
expect(@proxy.sessions[0]).to receive(method).with(Post, [2])
|
36
|
+
expect(@proxy.sessions[1]).to receive(method).with(Post, [1, 3])
|
37
37
|
@proxy.send(method, Post, [1, 2, 3])
|
38
38
|
end
|
39
39
|
end
|
@@ -13,28 +13,32 @@ describe Sunspot::SessionProxy::MasterSlaveSessionProxy do
|
|
13
13
|
methods.each do |method|
|
14
14
|
it "should delegate #{method} to #{delegate}" do
|
15
15
|
args = Array.new(Sunspot::Session.instance_method(method).arity.abs) do
|
16
|
-
|
16
|
+
double('arg')
|
17
|
+
end
|
18
|
+
if args.empty?
|
19
|
+
expect(instance_variable_get(:"@#{delegate}")).to receive(method).with(no_args)
|
20
|
+
else
|
21
|
+
expect(instance_variable_get(:"@#{delegate}")).to receive(method).with(*args)
|
17
22
|
end
|
18
|
-
instance_variable_get(:"@#{delegate}").should_receive(method).with(*args)
|
19
23
|
@proxy.send(method, *args)
|
20
24
|
end
|
21
25
|
end
|
22
26
|
end
|
23
27
|
|
24
28
|
it 'should return master session config by default' do
|
25
|
-
@proxy.config.
|
29
|
+
expect(@proxy.config).to eql(@master_session.config)
|
26
30
|
end
|
27
31
|
|
28
32
|
it 'should return master session config when specified' do
|
29
|
-
@proxy.config(:master).
|
33
|
+
expect(@proxy.config(:master)).to eql(@master_session.config)
|
30
34
|
end
|
31
35
|
|
32
36
|
it 'should return slave session config when specified' do
|
33
|
-
@proxy.config(:slave).
|
37
|
+
expect(@proxy.config(:slave)).to eql(@slave_session.config)
|
34
38
|
end
|
35
39
|
|
36
40
|
it 'should raise ArgumentError when bogus config specified' do
|
37
|
-
|
41
|
+
expect { @proxy.config(:bogus) }.to raise_error
|
38
42
|
end
|
39
43
|
|
40
44
|
it_should_behave_like 'session proxy'
|
@@ -33,14 +33,14 @@ describe Sunspot::SessionProxy::Retry5xxSessionProxy do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it "should behave normally without a stubbed exception" do
|
36
|
-
@sunspot_session.
|
36
|
+
expect(@sunspot_session).to receive(:index).and_return(double)
|
37
37
|
Sunspot.index(post)
|
38
38
|
end
|
39
39
|
|
40
40
|
it "should be successful with a single exception followed by a sucess" do
|
41
41
|
e = FakeRSolrErrorHttp.new(fake_rsolr_request, fake_rsolr_response(503))
|
42
|
-
@sunspot_session.
|
43
|
-
@sunspot_session.
|
42
|
+
expect(@sunspot_session).to receive(:index) do
|
43
|
+
expect(@sunspot_session).to receive(:index).and_return(double)
|
44
44
|
raise e
|
45
45
|
end
|
46
46
|
Sunspot.index(post)
|
@@ -51,23 +51,23 @@ describe Sunspot::SessionProxy::Retry5xxSessionProxy do
|
|
51
51
|
e = FakeRSolrErrorHttp.new(fake_rsolr_request, fake_response)
|
52
52
|
fake_success = double('success')
|
53
53
|
|
54
|
-
@sunspot_session.
|
55
|
-
@sunspot_session.
|
56
|
-
@sunspot_session.
|
54
|
+
expect(@sunspot_session).to receive(:index) do
|
55
|
+
expect(@sunspot_session).to receive(:index) do
|
56
|
+
allow(@sunspot_session).to receive(:index).and_return(fake_success)
|
57
57
|
raise e
|
58
58
|
end
|
59
59
|
raise e
|
60
60
|
end
|
61
61
|
|
62
62
|
response = Sunspot.index(post)
|
63
|
-
response.
|
64
|
-
response.
|
63
|
+
expect(response).not_to eq(fake_success)
|
64
|
+
expect(response).to eq(fake_response)
|
65
65
|
end
|
66
66
|
|
67
67
|
it "should not retry a 4xx" do
|
68
68
|
e = FakeRSolrErrorHttp.new(fake_rsolr_request, fake_rsolr_response(400))
|
69
|
-
@sunspot_session.
|
70
|
-
|
69
|
+
expect(@sunspot_session).to receive(:index).and_raise(e)
|
70
|
+
expect { Sunspot.index(post) }.to raise_error
|
71
71
|
end
|
72
72
|
|
73
73
|
# TODO: try against more than just Sunspot.index? but that's just testing the
|
@@ -8,8 +8,8 @@ describe Sunspot::SessionProxy::ShardingSessionProxy do
|
|
8
8
|
[:index, :index!, :remove, :remove!].each do |method|
|
9
9
|
it "should delegate #{method} to appropriate shard" do
|
10
10
|
posts = [Post.new(:blog_id => 2), Post.new(:blog_id => 3)]
|
11
|
-
@proxy.sessions[0].
|
12
|
-
@proxy.sessions[1].
|
11
|
+
expect(@proxy.sessions[0]).to receive(method).with([posts[0]])
|
12
|
+
expect(@proxy.sessions[1]).to receive(method).with([posts[1]])
|
13
13
|
@proxy.send(method, posts[0])
|
14
14
|
@proxy.send(method, posts[1])
|
15
15
|
end
|
@@ -17,17 +17,17 @@ describe Sunspot::SessionProxy::ShardingSessionProxy do
|
|
17
17
|
|
18
18
|
[:remove_by_id, :remove_by_id!, :atomic_update, :atomic_update!].each do |method|
|
19
19
|
it "should raise NotSupportedError when #{method} called" do
|
20
|
-
|
20
|
+
expect { @proxy.send(method, Post, 1) }.to raise_error(Sunspot::SessionProxy::NotSupportedError)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
[:remove_all, :remove_all!].each do |method|
|
25
25
|
it "should raise NotSupportedError when #{method} called with argument" do
|
26
|
-
|
26
|
+
expect { @proxy.send(method, Post) }.to raise_error(Sunspot::SessionProxy::NotSupportedError)
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should delegate #{method} without argument to all shards" do
|
30
|
-
@proxy.sessions.each { |session| session.
|
30
|
+
@proxy.sessions.each { |session| expect(session).to receive(method) }
|
31
31
|
@proxy.send(method)
|
32
32
|
end
|
33
33
|
end
|
@@ -35,42 +35,43 @@ describe Sunspot::SessionProxy::ShardingSessionProxy do
|
|
35
35
|
[:commit, :commit_if_dirty, :commit_if_delete_dirty, :optimize].each do |method|
|
36
36
|
it "should delegate #{method} to all sessions" do
|
37
37
|
@proxy.sessions.each do |session|
|
38
|
-
session.
|
38
|
+
expect(session).to receive(method)
|
39
39
|
end
|
40
40
|
@proxy.send(method)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should not support the :batch method" do
|
45
|
-
|
45
|
+
expect { @proxy.batch }.to raise_error(Sunspot::SessionProxy::NotSupportedError)
|
46
46
|
end
|
47
47
|
|
48
48
|
it "should delegate new_search to search session, adding in shards parameter" do
|
49
49
|
search = @proxy.new_search(Post)
|
50
|
-
search.query[:shards].
|
50
|
+
expect(search.query[:shards]).to eq(
|
51
51
|
'http://localhost:8980/solr,http://localhost:8981/solr'
|
52
|
+
)
|
52
53
|
end
|
53
54
|
|
54
55
|
it "should delegate search to search session, adding in shards parameter" do
|
55
56
|
@proxy.search(Post)
|
56
|
-
connection.
|
57
|
+
expect(connection).to have_last_search_with(
|
57
58
|
:shards => 'http://localhost:8980/solr,http://localhost:8981/solr'
|
58
59
|
)
|
59
60
|
end
|
60
61
|
|
61
62
|
[:dirty, :delete_dirty].each do |method|
|
62
63
|
it "should be dirty if any of the sessions are dirty" do
|
63
|
-
@proxy.sessions[0].
|
64
|
-
@proxy.
|
64
|
+
allow(@proxy.sessions[0]).to receive(:"#{method}?").and_return(true)
|
65
|
+
expect(@proxy).to send("be_#{method}")
|
65
66
|
end
|
66
67
|
|
67
68
|
it "should not be dirty if none of the sessions are dirty" do
|
68
|
-
@proxy.
|
69
|
+
expect(@proxy).not_to send("be_#{method}")
|
69
70
|
end
|
70
71
|
end
|
71
72
|
|
72
73
|
it "should raise a NotSupportedError when :config is called" do
|
73
|
-
|
74
|
+
expect { @proxy.config }.to raise_error(Sunspot::SessionProxy::NotSupportedError)
|
74
75
|
end
|
75
76
|
|
76
77
|
it_should_behave_like 'session proxy'
|
@@ -13,8 +13,8 @@ describe Sunspot::SessionProxy::ShardingSessionProxy do
|
|
13
13
|
it "should call rescued_exception when an exception is caught" do
|
14
14
|
SUPPORTED_METHODS.each do |method|
|
15
15
|
e = FakeException.new(method)
|
16
|
-
@search_session.
|
17
|
-
@proxy.
|
16
|
+
allow(@search_session).to receive(method).and_raise(e)
|
17
|
+
expect(@proxy).to receive(:rescued_exception).with(method, e)
|
18
18
|
@proxy.send(method)
|
19
19
|
end
|
20
20
|
end
|
@@ -3,7 +3,7 @@ require File.expand_path('spec_helper', File.join(File.dirname(__FILE__), '..'))
|
|
3
3
|
shared_examples_for 'session proxy' do
|
4
4
|
Sunspot::Session.public_instance_methods(false).each do |method|
|
5
5
|
it "should respond to #{method.inspect}" do
|
6
|
-
@proxy.
|
6
|
+
expect(@proxy).to respond_to(method)
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
@@ -17,7 +17,7 @@ describe Sunspot::SessionProxy::ThreadLocalSessionProxy do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'should have the same session for the same thread' do
|
20
|
-
@proxy.session.
|
20
|
+
expect(@proxy.session).to eql(@proxy.session)
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'should not have the same session for different threads' do
|
@@ -26,20 +26,24 @@ describe Sunspot::SessionProxy::ThreadLocalSessionProxy do
|
|
26
26
|
Thread.new do
|
27
27
|
session2 = @proxy.session
|
28
28
|
end.join
|
29
|
-
session1.
|
29
|
+
expect(session1).not_to eql(session2)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'should not have the same session for the same thread in different proxy instances' do
|
33
33
|
proxy2 = Sunspot::SessionProxy::ThreadLocalSessionProxy.new(@config)
|
34
|
-
@proxy.session.
|
34
|
+
expect(@proxy.session).not_to eql(proxy2.session)
|
35
35
|
end
|
36
36
|
|
37
37
|
(Sunspot::Session.public_instance_methods(false) - ['config', :config]).each do |method|
|
38
38
|
it "should delegate #{method.inspect} to its session" do
|
39
39
|
args = Array.new(Sunspot::Session.instance_method(method).arity.abs) do
|
40
|
-
|
40
|
+
double('arg')
|
41
|
+
end
|
42
|
+
if args.empty?
|
43
|
+
expect(@proxy.session).to receive(method).with(no_args)
|
44
|
+
else
|
45
|
+
expect(@proxy.session).to receive(method).with(*args)
|
41
46
|
end
|
42
|
-
@proxy.session.should_receive(method).with(*args)
|
43
47
|
@proxy.send(method, *args)
|
44
48
|
end
|
45
49
|
end
|
data/spec/api/session_spec.rb
CHANGED
@@ -7,7 +7,7 @@ shared_examples_for 'all sessions' do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'should add document to connection' do
|
10
|
-
connection.
|
10
|
+
expect(connection.adds.size).to eq(1)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
@@ -17,11 +17,11 @@ shared_examples_for 'all sessions' do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'should add document to connection' do
|
20
|
-
connection.
|
20
|
+
expect(connection.adds.size).to eq(1)
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'should commit' do
|
24
|
-
connection.
|
24
|
+
expect(connection.commits.size).to eq(1)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -31,27 +31,27 @@ shared_examples_for 'all sessions' do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'should commit' do
|
34
|
-
connection.
|
34
|
+
expect(connection.commits.size).to eq(1)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
context '#commit(bool)' do
|
39
39
|
it 'should soft-commit if bool=true' do
|
40
40
|
@session.commit(true)
|
41
|
-
connection.
|
42
|
-
connection.
|
41
|
+
expect(connection.commits.size).to eq(1)
|
42
|
+
expect(connection.soft_commits.size).to eq(1)
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'should hard-commit if bool=false' do
|
46
46
|
@session.commit(false)
|
47
|
-
connection.
|
48
|
-
connection.
|
47
|
+
expect(connection.commits.size).to eq(1)
|
48
|
+
expect(connection.soft_commits.size).to eq(0)
|
49
49
|
end
|
50
50
|
|
51
51
|
it 'should hard-commit if bool is not specified' do
|
52
52
|
@session.commit
|
53
|
-
connection.
|
54
|
-
connection.
|
53
|
+
expect(connection.commits.size).to eq(1)
|
54
|
+
expect(connection.soft_commits.size).to eq(0)
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
@@ -61,7 +61,7 @@ shared_examples_for 'all sessions' do
|
|
61
61
|
end
|
62
62
|
|
63
63
|
it 'should optimize' do
|
64
|
-
connection.
|
64
|
+
expect(connection.optims.size).to eq(1)
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
@@ -71,7 +71,7 @@ shared_examples_for 'all sessions' do
|
|
71
71
|
end
|
72
72
|
|
73
73
|
it 'should search' do
|
74
|
-
connection.
|
74
|
+
expect(connection.searches.size).to eq(1)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
@@ -97,31 +97,31 @@ describe 'Session' do
|
|
97
97
|
|
98
98
|
it 'should open connection with defaults if nothing specified' do
|
99
99
|
Sunspot.commit
|
100
|
-
connection.opts[:url].
|
100
|
+
expect(connection.opts[:url]).to eq('http://127.0.0.1:8983/solr/default')
|
101
101
|
end
|
102
102
|
|
103
103
|
it 'should open a connection with custom host' do
|
104
104
|
Sunspot.config.solr.url = 'http://127.0.0.1:8981/solr'
|
105
105
|
Sunspot.commit
|
106
|
-
connection.opts[:url].
|
106
|
+
expect(connection.opts[:url]).to eq('http://127.0.0.1:8981/solr')
|
107
107
|
end
|
108
108
|
|
109
109
|
it 'should open a connection with custom read timeout' do
|
110
110
|
Sunspot.config.solr.read_timeout = 0.5
|
111
111
|
Sunspot.commit
|
112
|
-
connection.opts[:read_timeout].
|
112
|
+
expect(connection.opts[:read_timeout]).to eq(0.5)
|
113
113
|
end
|
114
114
|
|
115
115
|
it 'should open a connection with custom open timeout' do
|
116
116
|
Sunspot.config.solr.open_timeout = 0.5
|
117
117
|
Sunspot.commit
|
118
|
-
connection.opts[:open_timeout].
|
118
|
+
expect(connection.opts[:open_timeout]).to eq(0.5)
|
119
119
|
end
|
120
120
|
|
121
121
|
it 'should open a connection through a provided proxy' do
|
122
122
|
Sunspot.config.solr.proxy = 'http://proxy.com:1234'
|
123
123
|
Sunspot.commit
|
124
|
-
connection.opts[:proxy].
|
124
|
+
expect(connection.opts[:proxy]).to eq('http://proxy.com:1234')
|
125
125
|
end
|
126
126
|
end
|
127
127
|
|
@@ -137,7 +137,7 @@ describe 'Session' do
|
|
137
137
|
config.solr.url = 'http://127.0.0.1:8982/solr'
|
138
138
|
end
|
139
139
|
session.commit
|
140
|
-
connection.opts[:url].
|
140
|
+
expect(connection.opts[:url]).to eq('http://127.0.0.1:8982/solr')
|
141
141
|
end
|
142
142
|
end
|
143
143
|
|
@@ -147,120 +147,120 @@ describe 'Session' do
|
|
147
147
|
end
|
148
148
|
|
149
149
|
it 'should start out not dirty' do
|
150
|
-
@session.dirty
|
150
|
+
expect(@session.dirty?).to be(false)
|
151
151
|
end
|
152
152
|
|
153
153
|
it 'should start out not delete_dirty' do
|
154
|
-
@session.delete_dirty
|
154
|
+
expect(@session.delete_dirty?).to be(false)
|
155
155
|
end
|
156
156
|
|
157
157
|
it 'should be dirty after adding an item' do
|
158
158
|
@session.index(Post.new)
|
159
|
-
@session.dirty
|
159
|
+
expect(@session.dirty?).to be(true)
|
160
160
|
end
|
161
161
|
|
162
162
|
it 'should be not be delete_dirty after adding an item' do
|
163
163
|
@session.index(Post.new)
|
164
|
-
@session.delete_dirty
|
164
|
+
expect(@session.delete_dirty?).to be(false)
|
165
165
|
end
|
166
166
|
|
167
167
|
it 'should be dirty after deleting an item' do
|
168
168
|
@session.remove(Post.new)
|
169
|
-
@session.dirty
|
169
|
+
expect(@session.dirty?).to be(true)
|
170
170
|
end
|
171
171
|
|
172
172
|
it 'should be delete_dirty after deleting an item' do
|
173
173
|
@session.remove(Post.new)
|
174
|
-
@session.delete_dirty
|
174
|
+
expect(@session.delete_dirty?).to be(true)
|
175
175
|
end
|
176
176
|
|
177
177
|
it 'should be dirty after a remove_all for a class' do
|
178
178
|
@session.remove_all(Post)
|
179
|
-
@session.dirty
|
179
|
+
expect(@session.dirty?).to be(true)
|
180
180
|
end
|
181
181
|
|
182
182
|
it 'should be delete_dirty after a remove_all for a class' do
|
183
183
|
@session.remove_all(Post)
|
184
|
-
@session.delete_dirty
|
184
|
+
expect(@session.delete_dirty?).to be(true)
|
185
185
|
end
|
186
186
|
|
187
187
|
it 'should be dirty after a global remove_all' do
|
188
188
|
@session.remove_all
|
189
|
-
@session.dirty
|
189
|
+
expect(@session.dirty?).to be(true)
|
190
190
|
end
|
191
191
|
|
192
192
|
it 'should be delete_dirty after a global remove_all' do
|
193
193
|
@session.remove_all
|
194
|
-
@session.delete_dirty
|
194
|
+
expect(@session.delete_dirty?).to be(true)
|
195
195
|
end
|
196
196
|
|
197
197
|
it 'should not be dirty after a commit' do
|
198
198
|
@session.index(Post.new)
|
199
199
|
@session.commit
|
200
|
-
@session.dirty
|
200
|
+
expect(@session.dirty?).to be(false)
|
201
201
|
end
|
202
202
|
|
203
203
|
it 'should not be dirty after an optimize' do
|
204
204
|
@session.index(Post.new)
|
205
205
|
@session.optimize
|
206
|
-
@session.dirty
|
206
|
+
expect(@session.dirty?).to be(false)
|
207
207
|
end
|
208
208
|
|
209
209
|
it 'should not be delete_dirty after a commit' do
|
210
210
|
@session.remove(Post.new)
|
211
211
|
@session.commit
|
212
|
-
@session.delete_dirty
|
212
|
+
expect(@session.delete_dirty?).to be(false)
|
213
213
|
end
|
214
214
|
|
215
215
|
it 'should not be delete_dirty after an optimize' do
|
216
216
|
@session.remove(Post.new)
|
217
217
|
@session.optimize
|
218
|
-
@session.delete_dirty
|
218
|
+
expect(@session.delete_dirty?).to be(false)
|
219
219
|
end
|
220
220
|
|
221
221
|
it 'should not commit when commit_if_dirty called on clean session' do
|
222
222
|
@session.commit_if_dirty
|
223
|
-
connection.
|
223
|
+
expect(connection.commits.size).to eq(0)
|
224
224
|
end
|
225
225
|
|
226
226
|
it 'should not commit when commit_if_delete_dirty called on clean session' do
|
227
227
|
@session.commit_if_delete_dirty
|
228
|
-
connection.
|
228
|
+
expect(connection.commits.size).to eq(0)
|
229
229
|
end
|
230
230
|
|
231
231
|
it 'should hard commit when commit_if_dirty called on dirty session' do
|
232
232
|
@session.index(Post.new)
|
233
233
|
@session.commit_if_dirty
|
234
|
-
connection.
|
234
|
+
expect(connection.commits.size).to eq(1)
|
235
235
|
end
|
236
236
|
|
237
237
|
it 'should soft commit when commit_if_dirty called on dirty session' do
|
238
238
|
@session.index(Post.new)
|
239
239
|
@session.commit_if_dirty(true)
|
240
|
-
connection.
|
241
|
-
connection.
|
240
|
+
expect(connection.commits.size).to eq(1)
|
241
|
+
expect(connection.soft_commits.size).to eq(1)
|
242
242
|
end
|
243
243
|
|
244
244
|
it 'should hard commit when commit_if_delete_dirty called on delete_dirty session' do
|
245
245
|
@session.remove(Post.new)
|
246
246
|
@session.commit_if_delete_dirty
|
247
|
-
connection.
|
247
|
+
expect(connection.commits.size).to eq(1)
|
248
248
|
end
|
249
249
|
|
250
250
|
it 'should soft commit when commit_if_delete_dirty called on delete_dirty session' do
|
251
251
|
@session.remove(Post.new)
|
252
252
|
@session.commit_if_delete_dirty(true)
|
253
|
-
connection.
|
254
|
-
connection.
|
253
|
+
expect(connection.commits.size).to eq(1)
|
254
|
+
expect(connection.soft_commits.size).to eq(1)
|
255
255
|
end
|
256
256
|
end
|
257
257
|
|
258
258
|
context 'session proxy' do
|
259
259
|
it 'should send messages to manually assigned session proxy' do
|
260
|
-
stub_session =
|
260
|
+
stub_session = double('session')
|
261
261
|
Sunspot.session = stub_session
|
262
262
|
post = Post.new
|
263
|
-
stub_session.
|
263
|
+
expect(stub_session).to receive(:index).with(post)
|
264
264
|
Sunspot.index(post)
|
265
265
|
Sunspot.reset!
|
266
266
|
end
|