sunspot_rails 2.2.6 → 2.6.0

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.
Files changed (65) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -2
  3. data/Appraisals +64 -0
  4. data/Gemfile +3 -0
  5. data/lib/sunspot/rails/configuration.rb +4 -0
  6. data/lib/sunspot/rails/request_lifecycle.rb +3 -1
  7. data/lib/sunspot/rails/searchable.rb +15 -7
  8. data/lib/sunspot/rails/solr_instrumentation.rb +2 -2
  9. data/lib/sunspot/rails/solr_logging.rb +5 -10
  10. data/lib/sunspot/rails/stub_session_proxy.rb +9 -2
  11. data/lib/sunspot/rails/tasks.rb +0 -1
  12. data/lib/sunspot/rails.rb +2 -0
  13. data/spec/configuration_spec.rb +77 -69
  14. data/spec/model_lifecycle_spec.rb +8 -8
  15. data/spec/model_spec.rb +72 -71
  16. data/spec/rails_app/app/controllers/application_controller.rb +4 -0
  17. data/spec/rails_app/app/controllers/posts_controller.rb +16 -0
  18. data/spec/{rails_template → rails_app}/app/models/author.rb +0 -2
  19. data/spec/{rails_template → rails_app}/app/models/blog.rb +0 -2
  20. data/spec/{rails_template → rails_app}/app/models/location.rb +0 -1
  21. data/spec/{rails_template → rails_app}/app/models/post.rb +0 -2
  22. data/spec/{rails_template → rails_app}/app/models/post_with_auto.rb +0 -2
  23. data/spec/{rails_template → rails_app}/app/models/post_with_default_scope.rb +0 -2
  24. data/spec/{rails_template → rails_app}/app/models/post_with_only_some_attributes_triggering_reindex.rb +0 -2
  25. data/spec/rails_app/config/application.rb +17 -0
  26. data/spec/rails_app/config/boot.rb +6 -0
  27. data/spec/rails_app/config/database.yml +5 -0
  28. data/spec/rails_app/config/environment.rb +5 -0
  29. data/spec/rails_app/config/environments/test.rb +41 -0
  30. data/spec/rails_app/config/initializers/rails_5_override.rb +1 -0
  31. data/spec/rails_app/config/initializers/secret_token.rb +1 -0
  32. data/spec/rails_app/config/initializers/session_store.rb +3 -0
  33. data/spec/{rails_template → rails_app}/config/sunspot.yml +2 -0
  34. data/spec/rails_app/config.ru +4 -0
  35. data/spec/rails_app/db/schema.rb +26 -0
  36. data/spec/rails_app/vendor/engines/test_engine/app/models/test_engine/rake_task_auto_load_test_model.rb +15 -0
  37. data/spec/rails_app/vendor/engines/test_engine/lib/test_engine/engine.rb +5 -0
  38. data/spec/rails_app/vendor/engines/test_engine/lib/test_engine.rb +4 -0
  39. data/spec/rake_task_spec.rb +9 -9
  40. data/spec/request_lifecycle_spec.rb +17 -21
  41. data/spec/schema.rb +8 -9
  42. data/spec/searchable_spec.rb +4 -4
  43. data/spec/server_spec.rb +7 -7
  44. data/spec/session_spec.rb +3 -3
  45. data/spec/shared_examples/indexed_after_save.rb +1 -1
  46. data/spec/shared_examples/not_indexed_after_save.rb +1 -1
  47. data/spec/spec_helper.rb +18 -51
  48. data/spec/stub_session_proxy_spec.rb +40 -36
  49. data/sunspot_rails.gemspec +15 -8
  50. metadata +102 -58
  51. data/dev_tasks/spec.rake +0 -97
  52. data/gemfiles/rails-3.0.0 +0 -21
  53. data/gemfiles/rails-3.1.0 +0 -21
  54. data/gemfiles/rails-3.2.0 +0 -21
  55. data/gemfiles/rails-4.0.0 +0 -25
  56. data/gemfiles/rails-4.1.0 +0 -24
  57. data/gemfiles/rails-4.2.0 +0 -24
  58. data/spec/rails_template/app/controllers/application_controller.rb +0 -10
  59. data/spec/rails_template/app/controllers/posts_controller.rb +0 -6
  60. data/spec/rails_template/config/database.yml +0 -11
  61. data/spec/rails_template/db/schema.rb +0 -27
  62. /data/{tmp → gemfiles}/.gitkeep +0 -0
  63. /data/spec/{rails_template → rails_app}/app/models/photo_post.rb +0 -0
  64. /data/spec/{rails_template → rails_app}/app/models/rake_task_auto_load_test_model.rb +0 -0
  65. /data/spec/{rails_template → rails_app}/config/routes.rb +0 -0
@@ -2,6 +2,7 @@ test:
2
2
  solr:
3
3
  hostname: localhost
4
4
  port: 8983
5
+ update_format: <%= ENV.fetch('UPDATE_FORMAT', 'xml') %>
5
6
  auto_index_callback: after_save
6
7
  auto_remove_callback: after_destroy
7
8
  development:
@@ -22,6 +23,7 @@ config_test:
22
23
  bind_address: 127.0.0.1
23
24
  read_timeout: 2
24
25
  open_timeout: 0.5
26
+ update_format: json
25
27
  proxy: http://proxy.com:12345
26
28
  auto_commit_after_request: false
27
29
  auto_commit_after_delete_request: true
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run RailsApp::Application
@@ -0,0 +1,26 @@
1
+ ActiveRecord::Schema.define(version: 0) do
2
+ create_table :posts, force: :cascade do |t|
3
+ t.string :title
4
+ t.string :type
5
+ t.integer :location_id
6
+ t.text :body
7
+ t.references :blog
8
+ t.timestamps null: true
9
+ end
10
+
11
+ create_table :locations, force: :cascade do |t|
12
+ t.float :lat
13
+ t.float :lng
14
+ end
15
+
16
+ create_table :blogs, force: :cascade do |t|
17
+ t.string :name
18
+ t.string :subdomain
19
+ t.timestamps null: true
20
+ end
21
+
22
+ create_table :writers, force: :cascade, primary_key: :writer_id do |t|
23
+ t.string :name
24
+ t.timestamps null: true
25
+ end
26
+ end
@@ -0,0 +1,15 @@
1
+ # This model should not be used for any test other than the spec test that
2
+ # checks if all models are loaded. We don't want to pre-load this model in
3
+ # another test because we're checking to see if it will be auto-loaded by
4
+ # the reindex task
5
+ module TestEngine
6
+ class RakeTaskAutoLoadTestModel < ActiveRecord::Base
7
+ def self.table_name
8
+ 'posts'
9
+ end
10
+
11
+ searchable do
12
+ string :name
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ module TestEngine
2
+ class Engine < ::Rails::Engine
3
+ engine_name 'sunspot_rails_test_engine'
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ require_relative "test_engine/engine"
2
+
3
+ module TestEngine
4
+ end
@@ -11,28 +11,28 @@ describe 'sunspot namespace rake task' do
11
11
  it "should reindex all models if none are specified" do
12
12
  run_rake_task("sunspot:reindex", '', '', true)
13
13
 
14
- # This model should not be used by any other test and therefore should only be loaded by this test
15
- Sunspot.searchable.collect(&:name).should include('RakeTaskAutoLoadTestModel')
14
+ # This models should not be used by any other test and therefore should only be loaded by this test
15
+ expect(Sunspot.searchable.collect(&:name)).to include('RakeTaskAutoLoadTestModel', 'TestEngine::RakeTaskAutoLoadTestModel')
16
16
  end
17
17
 
18
18
  it "should accept a space delimited list of models to reindex" do
19
- Post.should_receive(:solr_reindex)
20
- Author.should_receive(:solr_reindex)
21
- Blog.should_not_receive(:solr_reindex)
19
+ expect(Post).to receive(:solr_reindex)
20
+ expect(Author).to receive(:solr_reindex)
21
+ expect(Blog).not_to receive(:solr_reindex)
22
22
 
23
23
  run_rake_task("sunspot:reindex", '', "Post Author", true)
24
24
  end
25
25
 
26
26
  it "should accept a plus delimited list of models to reindex" do
27
- Post.should_receive(:solr_reindex)
28
- Author.should_receive(:solr_reindex)
29
- Blog.should_not_receive(:solr_reindex)
27
+ expect(Post).to receive(:solr_reindex)
28
+ expect(Author).to receive(:solr_reindex)
29
+ expect(Blog).not_to receive(:solr_reindex)
30
30
 
31
31
  run_rake_task("sunspot:reindex", '', "Post+Author", true)
32
32
  end
33
33
 
34
34
  it "should raise exception when all tables of sunspot models are empty" do
35
- STDOUT.should_receive(:puts).with("You have no data in the database. Reindexing does nothing here.")
35
+ expect(STDOUT).to receive(:puts).with("You have no data in the database. Reindexing does nothing here.")
36
36
  empty_tables
37
37
  run_rake_task("sunspot:reindex")
38
38
  end
@@ -15,47 +15,43 @@ describe PostsController, :type => :controller do
15
15
  Sunspot::Rails.configuration = nil
16
16
  end
17
17
 
18
- unless respond_to?(:describes)
19
- controller_name :posts # RSpec 1
20
- end
21
-
22
18
  it 'should automatically commit after each action if specified' do
23
19
  @configuration.user_configuration = { 'auto_commit_after_request' => true }
24
- Sunspot.should_receive(:commit_if_dirty)
25
- post :create, :post => { :title => 'Test 1' }
20
+ expect(Sunspot).to receive(:commit_if_dirty)
21
+ post :create, :params => { :post => { :title => 'Test 1' } }
26
22
  end
27
-
23
+
28
24
  it 'should not commit, if configuration is set to false' do
29
25
  @configuration.user_configuration = { 'auto_commit_after_request' => false }
30
- Sunspot.should_not_receive(:commit_if_dirty)
31
- post :create, :post => { :title => 'Test 1' }
26
+ expect(Sunspot).not_to receive(:commit_if_dirty)
27
+ post :create, :params => { :post => { :title => 'Test 1' } }
32
28
  end
33
29
 
34
30
  it 'should commit if configuration is not specified' do
35
31
  @configuration.user_configuration = {}
36
- Sunspot.should_receive(:commit_if_dirty)
37
- post :create, :post => { :title => 'Test 1' }
32
+ expect(Sunspot).to receive(:commit_if_dirty)
33
+ post :create, :params => { :post => { :title => 'Test 1' } }
38
34
  end
39
-
35
+
40
36
  ### auto_commit_if_delete_dirty
41
-
37
+
42
38
  it 'should automatically commit after each delete if specified' do
43
39
  @configuration.user_configuration = { 'auto_commit_after_request' => false,
44
40
  'auto_commit_after_delete_request' => true }
45
- Sunspot.should_receive(:commit_if_delete_dirty)
46
- post :create, :post => { :title => 'Test 1' }
41
+ expect(Sunspot).to receive(:commit_if_delete_dirty)
42
+ post :create, :params => { :post => { :title => 'Test 1' } }
47
43
  end
48
-
44
+
49
45
  it 'should not automatically commit on delete if configuration is set to false' do
50
46
  @configuration.user_configuration = { 'auto_commit_after_request' => false,
51
47
  'auto_commit_after_delete_request' => false }
52
- Sunspot.should_not_receive(:commit_if_delete_dirty)
53
- post :create, :post => { :title => 'Test 1' }
48
+ expect(Sunspot).not_to receive(:commit_if_delete_dirty)
49
+ post :create, :params => { :post => { :title => 'Test 1' } }
54
50
  end
55
51
 
56
52
  it 'should not automatically commit on delete if configuration is not specified' do
57
53
  @configuration.user_configuration = { 'auto_commit_after_request' => false }
58
- Sunspot.should_not_receive(:commit_if_delete_dirty)
59
- post :create, :post => { :title => 'Test 1' }
54
+ expect(Sunspot).not_to receive(:commit_if_delete_dirty)
55
+ post :create, :params => { :post => { :title => 'Test 1' } }
60
56
  end
61
- end
57
+ end
data/spec/schema.rb CHANGED
@@ -1,27 +1,26 @@
1
- ActiveRecord::Schema.define(:version => 0) do
2
- create_table :posts, :force => true do |t|
1
+ ActiveRecord::Schema.define(version: 0) do
2
+ create_table :posts, force: true do |t|
3
3
  t.string :title
4
4
  t.string :type
5
5
  t.integer :location_id
6
6
  t.text :body
7
7
  t.references :blog
8
- t.timestamps
8
+ t.timestamps null: true
9
9
  end
10
10
 
11
- create_table :locations, :force => true do |t|
11
+ create_table :locations, force: true do |t|
12
12
  t.float :lat
13
13
  t.float :lng
14
14
  end
15
15
 
16
- create_table :blogs, :force => true do |t|
16
+ create_table :blogs, force: true do |t|
17
17
  t.string :name
18
18
  t.string :subdomain
19
- t.timestamps
19
+ t.timestamps null: true
20
20
  end
21
21
 
22
- create_table :writers, :force => true, :primary_key => :writer_id do |t|
22
+ create_table :writers, force: true, primary_key: :writer_id do |t|
23
23
  t.string :name
24
- t.timestamps
24
+ t.timestamps null: true
25
25
  end
26
-
27
26
  end
@@ -6,10 +6,10 @@ describe Sunspot::Rails::Searchable do
6
6
  # Rspec runs tests in random order, causing this test to fail on occasion unless we ensure the models have loaded.
7
7
  Author; Blog; Post;
8
8
 
9
- Sunspot.searchable.should_not be_empty
10
- Sunspot.searchable.should include(Author)
11
- Sunspot.searchable.should include(Blog)
12
- Sunspot.searchable.should include(Post)
9
+ expect(Sunspot.searchable).not_to be_empty
10
+ expect(Sunspot.searchable).to include(Author)
11
+ expect(Sunspot.searchable).to include(Blog)
12
+ expect(Sunspot.searchable).to include(Post)
13
13
  end
14
14
  end
15
15
  end
data/spec/server_spec.rb CHANGED
@@ -4,28 +4,28 @@ describe Sunspot::Rails::Server do
4
4
  before :each do
5
5
  @server = Sunspot::Rails::Server.new
6
6
  @config = Sunspot::Rails::Configuration.new
7
- @server.stub(:configuration){ @config }
7
+ allow(@server).to receive(:configuration){ @config }
8
8
  @solr_home = File.join(@config.solr_home)
9
9
  end
10
10
 
11
11
  it "sets the correct Solr home" do
12
- @server.solr_home.should == @solr_home
12
+ expect(@server.solr_home).to eq(@solr_home)
13
13
  end
14
14
 
15
15
  it "sets the correct Solr PID path" do
16
- @server.pid_path.should == File.join(@server.pid_dir, 'sunspot-solr-test.pid')
16
+ expect(@server.pid_path).to eq(File.join(@server.pid_dir, 'sunspot-solr-test.pid'))
17
17
  end
18
18
 
19
19
  it "sets the correct port" do
20
- @server.port.should == 8983
20
+ expect(@server.port).to eq(8983)
21
21
  end
22
22
 
23
23
  it "sets the log level using configuration" do
24
- @config.stub(:log_level){ 'WARNING' }
25
- @server.log_level.should == "WARNING"
24
+ allow(@config).to receive(:log_level){ 'WARNING' }
25
+ expect(@server.log_level).to eq("WARNING")
26
26
  end
27
27
 
28
28
  it "sets the correct log file" do
29
- @server.log_file.should == File.join(Rails.root, 'log', 'sunspot-solr-test.log')
29
+ expect(@server.log_file).to eq(File.join(Rails.root, 'log', 'sunspot-solr-test.log'))
30
30
  end
31
31
  end
data/spec/session_spec.rb CHANGED
@@ -19,7 +19,7 @@ describe 'Sunspot::Rails session' do
19
19
 
20
20
  # There should be no items in the queue with the same object_id
21
21
  object_ids = sessions.map(&:object_id)
22
- object_ids.uniq.should == object_ids
22
+ expect(object_ids.uniq).to eq(object_ids)
23
23
  end
24
24
 
25
25
  it 'should create a separate master/slave session if configured' do
@@ -31,7 +31,7 @@ describe 'Sunspot::Rails session' do
31
31
  context 'disabled' do
32
32
  before do
33
33
  Sunspot::Rails.reset
34
- ::Rails.stub(:env).and_return("config_disabled_test")
34
+ allow(::Rails).to receive(:env).and_return("config_disabled_test")
35
35
  end
36
36
 
37
37
  after do
@@ -39,7 +39,7 @@ describe 'Sunspot::Rails session' do
39
39
  end
40
40
 
41
41
  it 'sets the session proxy as a stub' do
42
- Sunspot::Rails.build_session.should be_a_kind_of(Sunspot::Rails::StubSessionProxy)
42
+ expect(Sunspot::Rails.build_session).to be_a_kind_of(Sunspot::Rails::StubSessionProxy)
43
43
  end
44
44
  end
45
45
 
@@ -3,6 +3,6 @@ shared_examples_for 'indexed after save' do
3
3
  subject.save!
4
4
  Sunspot.commit
5
5
 
6
- subject.class.search.results.should include(subject)
6
+ expect(subject.class.search.results).to include(subject)
7
7
  end
8
8
  end
@@ -3,6 +3,6 @@ shared_examples_for 'not indexed after save' do
3
3
  subject.save!
4
4
  Sunspot.commit
5
5
 
6
- subject.class.search.results.should_not include(subject)
6
+ expect(subject.class.search.results).not_to include(subject)
7
7
  end
8
8
  end
data/spec/spec_helper.rb CHANGED
@@ -1,75 +1,42 @@
1
- # This file is copied to spec/ when you run 'rails generate rspec:install'
2
1
  ENV["RAILS_ENV"] ||= 'test'
3
- if rsolr_version = ENV['RSOLR_GEM_VERSION']
4
- STDERR.puts("Forcing RSolr version #{rsolr_version}")
5
- gem "rsolr", rsolr_version
6
- end
7
-
8
- # Require the Database-specific gems
9
- ENV['DB'] ||= 'sqlite'
10
- Bundler.require(ENV['DB'])
11
2
 
12
- require File.expand_path('config/environment', ENV['RAILS_ROOT'])
3
+ require File.expand_path('config/environment', File.expand_path('../rails_app', __FILE__))
4
+ require File.expand_path('../../lib/sunspot_rails', __FILE__)
13
5
  require 'rspec/rails'
14
- require 'rspec/autorun'
15
- require File.join('sunspot', 'rails', 'solr_logging')
16
6
 
17
- # Requires supporting ruby files with custom matchers and macros, etc, in
18
- # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
19
- # run as spec files by default. This means that files in spec/support that end
20
- # in _spec.rb will both be required and run as specs, causing the specs to be
21
- # run twice. It is recommended that you do not name files matching this glob to
22
- # end with _spec.rb. You can configure this pattern with with the --pattern
23
- # option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
24
- Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
7
+ if RSolr::VERSION >= '2'
8
+ require File.join('sunspot', 'rails', 'solr_logging')
9
+ end
25
10
 
26
11
  # Load all shared examples
27
- Dir[File.expand_path("shared_examples/*.rb", File.dirname(__FILE__))].each {|f| require f}
12
+ Dir[File.expand_path("shared_examples/*.rb", File.dirname(__FILE__))].each { |f| require f }
28
13
 
29
14
  # Load the schema
30
- load File.join(ENV['RAILS_ROOT'], 'db', 'schema.rb')
15
+ load File.join(File.expand_path('../rails_app', __FILE__), 'db', 'schema.rb')
31
16
 
32
17
  RSpec.configure do |config|
33
- # ## Mock Framework
34
- #
35
- # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
36
- #
37
- # config.mock_with :mocha
38
- # config.mock_with :flexmock
39
- # config.mock_with :rr
40
-
41
- # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
42
- config.fixture_path = "#{::Rails.root}/spec/fixtures"
43
-
44
- # If you're not using ActiveRecord, or you'd prefer not to run each of your
45
- # examples within a transaction, remove the following line or assign false
46
- # instead of true.
47
18
  config.use_transactional_fixtures = true
48
-
49
- # If true, the base class of anonymous controllers will be inferred
50
- # automatically. This will be the default behavior in future versions of
51
- # rspec-rails.
52
19
  config.infer_base_class_for_anonymous_controllers = false
53
-
54
- # Run specs in random order to surface order dependencies. If you find an
55
- # order dependency and want to debug it, you can fix the order by providing
56
- # the seed, which is printed after each run.
57
- # --seed 1234
58
- config.order = "random"
20
+ config.order = 'random'
21
+ config.infer_spec_type_from_file_location!
59
22
 
60
23
  config.before(:each) do
61
24
  empty_tables
62
25
  Sunspot.remove_all!
63
- end
26
+ end
64
27
  end
65
28
 
66
29
  def empty_tables
67
- ActiveRecord::Base.connection.tables.each do |table_name|
30
+ sources = if Rails::VERSION::MAJOR > 4
31
+ ActiveRecord::Base.connection.data_sources
32
+ else
33
+ ActiveRecord::Base.connection.tables
34
+ end
35
+ sources.each do |table_name|
68
36
  ActiveRecord::Base.connection.execute("DELETE FROM #{table_name}") unless table_name == 'schema_migrations'
69
37
  end
70
38
  end
71
39
 
72
- # COMPATIBILITY: Rails 4 has deprecated the 'scoped' method in favour of 'all'
73
40
  def relation(clazz)
74
- ::Rails.version >= '4' ? clazz.all : clazz.scoped
75
- end
41
+ Rails::VERSION::MAJOR >= 4 ? clazz.all : clazz.scoped
42
+ end
@@ -13,142 +13,146 @@ describe 'specs with Sunspot stubbed' do
13
13
  foo = double('Foo')
14
14
  block = lambda { foo.bar }
15
15
 
16
- foo.should_receive(:bar)
16
+ expect(foo).to receive(:bar)
17
17
 
18
18
  Sunspot.batch(&block)
19
19
  end
20
20
 
21
21
  it 'should not send index to session' do
22
- @session.should_not_receive(:index)
22
+ expect(@session).not_to receive(:index)
23
23
  @post.index
24
24
  end
25
25
 
26
26
  it 'should not send index! to session' do
27
- @session.should_not_receive(:index!)
27
+ expect(@session).not_to receive(:index!)
28
28
  @post.index!
29
29
  end
30
30
 
31
31
  it 'should not send atomic_update to session' do
32
- @session.should_not_receive(:atomic_update)
32
+ expect(@session).not_to receive(:atomic_update)
33
33
  @post.index
34
34
  end
35
35
 
36
36
  it 'should not send atomic_update! to session' do
37
- @session.should_not_receive(:atomic_update!)
37
+ expect(@session).not_to receive(:atomic_update!)
38
38
  @post.index!
39
39
  end
40
40
 
41
41
  it 'should not send commit to session' do
42
- @session.should_not_receive(:commit)
42
+ expect(@session).not_to receive(:commit)
43
43
  Sunspot.commit
44
44
  end
45
45
 
46
46
  it 'should not send remove to session' do
47
- @session.should_not_receive(:remove)
47
+ expect(@session).not_to receive(:remove)
48
48
  @post.remove_from_index
49
49
  end
50
50
 
51
51
  it 'should not send remove! to session' do
52
- @session.should_not_receive(:remove)
52
+ expect(@session).not_to receive(:remove)
53
53
  @post.remove_from_index!
54
54
  end
55
55
 
56
56
  it 'should not send remove_by_id to session' do
57
- @session.should_not_receive(:remove_by_id)
57
+ expect(@session).not_to receive(:remove_by_id)
58
58
  Sunspot.remove_by_id(Post, 1)
59
59
  end
60
60
 
61
61
  it 'should not send remove_by_id! to session' do
62
- @session.should_not_receive(:remove_by_id!)
62
+ expect(@session).not_to receive(:remove_by_id!)
63
63
  Sunspot.remove_by_id!(Post, 1)
64
64
  end
65
65
 
66
66
  it 'should not send remove_all to session' do
67
- @session.should_not_receive(:remove_all)
67
+ expect(@session).not_to receive(:remove_all)
68
68
  Post.remove_all_from_index
69
69
  end
70
70
 
71
71
  it 'should not send remove_all! to session' do
72
- @session.should_not_receive(:remove_all!)
72
+ expect(@session).not_to receive(:remove_all!)
73
73
  Post.remove_all_from_index!
74
74
  end
75
75
 
76
76
  it 'should not send optimize to session' do
77
- @session.should_not_receive(:optimize)
77
+ expect(@session).not_to receive(:optimize)
78
78
  Sunspot.optimize
79
79
  end
80
80
 
81
81
  it 'should return false for dirty?' do
82
- @session.should_not_receive(:dirty?)
83
- Sunspot.dirty?.should == false
82
+ expect(@session).not_to receive(:dirty?)
83
+ expect(Sunspot.dirty?).to eq(false)
84
84
  end
85
85
 
86
86
  it 'should not send commit_if_dirty to session' do
87
- @session.should_not_receive(:commit_if_dirty)
87
+ expect(@session).not_to receive(:commit_if_dirty)
88
88
  Sunspot.commit_if_dirty
89
89
  end
90
90
 
91
91
  it 'should return false for delete_dirty?' do
92
- @session.should_not_receive(:delete_dirty?)
93
- Sunspot.delete_dirty?.should == false
92
+ expect(@session).not_to receive(:delete_dirty?)
93
+ expect(Sunspot.delete_dirty?).to eq(false)
94
94
  end
95
95
 
96
96
  it 'should not send commit_if_delete_dirty to session' do
97
- @session.should_not_receive(:commit_if_delete_dirty)
97
+ expect(@session).not_to receive(:commit_if_delete_dirty)
98
98
  Sunspot.commit_if_delete_dirty
99
99
  end
100
100
 
101
101
  it 'should not execute a search when #search called' do
102
- @session.should_not_receive(:search)
102
+ expect(@session).not_to receive(:search)
103
103
  Post.search
104
104
  end
105
105
 
106
106
  it 'should not execute a search when #search called with parameters' do
107
- @session.should_not_receive(:search)
107
+ expect(@session).not_to receive(:search)
108
108
  Post.search(:include => :blog, :select => 'id, title')
109
109
  end
110
110
 
111
111
  it 'should return a new search' do
112
- @session.should_not_receive(:new_search)
113
- Sunspot.new_search(Post).should respond_to(:execute)
112
+ expect(@session).not_to receive(:new_search)
113
+ expect(Sunspot.new_search(Post)).to respond_to(:execute)
114
114
  end
115
115
 
116
116
  it 'should not send more_like_this to session' do
117
- @session.should_not_receive(:more_like_this)
117
+ expect(@session).not_to receive(:more_like_this)
118
118
  Sunspot.more_like_this(@post)
119
119
  end
120
120
 
121
+ it 'should not raise error when reindexing scope' do
122
+ expect{ Post.solr_index }.to_not raise_error
123
+ end
124
+
121
125
  describe 'stub search' do
122
126
  before :each do
123
127
  @search = Post.search
124
128
  end
125
129
 
126
130
  it 'should return empty results' do
127
- @search.results.should == []
131
+ expect(@search.results).to eq([])
128
132
  end
129
133
 
130
134
  it 'should return empty hits' do
131
- @search.hits.should == []
135
+ expect(@search.hits).to eq([])
132
136
  end
133
137
 
134
138
  it 'should return the same for raw_results as hits' do
135
- @search.raw_results.should == @search.hits
139
+ expect(@search.raw_results).to eq(@search.hits)
136
140
  end
137
141
 
138
142
  it 'should return zero total' do
139
- @search.total.should == 0
143
+ expect(@search.total).to eq(0)
140
144
  end
141
145
 
142
146
  it 'should return empty results for a given facet' do
143
- @search.facet(:category_id).rows.should == []
147
+ expect(@search.facet(:category_id).rows).to eq([])
144
148
  end
145
149
 
146
150
  it 'should return empty results for a given dynamic facet' do
147
- @search.dynamic_facet(:custom).rows.should == []
151
+ expect(@search.dynamic_facet(:custom).rows).to eq([])
148
152
  end
149
153
 
150
154
  it 'should return empty array if listing facets' do
151
- @search.facets.should == []
155
+ expect(@search.facets).to eq([])
152
156
  end
153
157
 
154
158
  describe '#data_accessor_for' do
@@ -157,11 +161,11 @@ describe 'specs with Sunspot stubbed' do
157
161
  end
158
162
 
159
163
  it 'should provide accessor for select' do
160
- @accessor.should respond_to(:select, :select=)
164
+ expect(@accessor).to respond_to(:select, :select=)
161
165
  end
162
166
 
163
167
  it 'should provide accessor for include' do
164
- @accessor.should respond_to(:include, :include=)
168
+ expect(@accessor).to respond_to(:include, :include=)
165
169
  end
166
170
  end
167
171
 
@@ -171,7 +175,7 @@ describe 'specs with Sunspot stubbed' do
171
175
  end
172
176
 
173
177
  it 'should response to all the available data methods' do
174
- @stats.should respond_to(
178
+ expect(@stats).to respond_to(
175
179
  :min,
176
180
  :max,
177
181
  :count,
@@ -183,11 +187,11 @@ describe 'specs with Sunspot stubbed' do
183
187
  end
184
188
 
185
189
  it 'should return empty results for a given facet' do
186
- @stats.facet(:category_id).rows.should == []
190
+ expect(@stats.facet(:category_id).rows).to eq([])
187
191
  end
188
192
 
189
193
  it 'should return empty array if listing facets' do
190
- @stats.facets.should == []
194
+ expect(@stats.facets).to eq([])
191
195
  end
192
196
 
193
197
  end