sunspot_rails 2.2.6 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
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