spec/thinking_sphinx_spec.rb in thinking-sphinx-2.1.0 vs spec/thinking_sphinx_spec.rb in thinking-sphinx-3.0.0.pre
- old
+ new
@@ -1,204 +1,41 @@
require 'spec_helper'
describe ThinkingSphinx do
- describe '.context' do
- it "should return a Context instance" do
- ThinkingSphinx.context.should be_a(ThinkingSphinx::Context)
- end
+ describe '.count' do
+ let(:search) { double('search', :total_entries => 23) }
- it "should remember changes to the Context instance" do
- models = ThinkingSphinx.context.indexed_models.clone
-
- ThinkingSphinx.context.indexed_models.replace([:model])
- ThinkingSphinx.context.indexed_models.should == [:model]
-
- ThinkingSphinx.context.indexed_models.replace(models)
+ before :each do
+ ThinkingSphinx::Search.stub :new => search
end
- end
- describe '.reset_context!' do
- it "should remove the existing Context instance" do
- existing = ThinkingSphinx.context
-
- ThinkingSphinx.reset_context!
- ThinkingSphinx.context.should_not == existing
-
- ThinkingSphinx.reset_context! existing
+ it "returns the total entries of the search object" do
+ ThinkingSphinx.count.should == search.total_entries
end
- end
- describe '.define_indexes?' do
- it "should define indexes by default" do
- ThinkingSphinx.define_indexes?.should be_true
- end
- end
+ it "passes through the given query and options" do
+ ThinkingSphinx::Search.should_receive(:new).with('foo', :bar => :baz).
+ and_return(search)
- describe '.define_indexes=' do
- it "should disable index definition" do
- ThinkingSphinx.define_indexes = false
- ThinkingSphinx.define_indexes?.should be_false
+ ThinkingSphinx.count('foo', :bar => :baz)
end
-
- it "should enable index definition" do
- ThinkingSphinx.define_indexes = false
- ThinkingSphinx.define_indexes?.should be_false
- ThinkingSphinx.define_indexes = true
- ThinkingSphinx.define_indexes?.should be_true
- end
end
- describe '.deltas_enabled?' do
- it "should index deltas by default" do
- ThinkingSphinx.deltas_enabled?.should be_true
- end
- end
+ describe '.search' do
+ let(:search) { double('search') }
- describe '.deltas_enabled=' do
- it "should disable delta indexing" do
- ThinkingSphinx.deltas_enabled = false
- ThinkingSphinx.deltas_enabled?.should be_false
- end
-
- it "should enable delta indexing" do
- ThinkingSphinx.deltas_enabled = false
- ThinkingSphinx.deltas_enabled?.should be_false
- ThinkingSphinx.deltas_enabled = true
- ThinkingSphinx.deltas_enabled?.should be_true
- end
- end
-
- describe '.updates_enabled?' do
- it "should update indexes by default" do
- ThinkingSphinx::Configuration.stub! :environment => 'development'
-
- ThinkingSphinx.updates_enabled = nil
- ThinkingSphinx.updates_enabled?.should be_true
- end
- end
-
- describe '.updates_enabled=' do
- it "should disable index updating" do
- ThinkingSphinx.updates_enabled = false
- ThinkingSphinx.updates_enabled?.should be_false
- end
-
- it "should enable index updating" do
- ThinkingSphinx.updates_enabled = false
- ThinkingSphinx.updates_enabled?.should be_false
- ThinkingSphinx.updates_enabled = true
- ThinkingSphinx.updates_enabled?.should be_true
- end
- end
-
- describe '.sphinx_running?' do
- it "should always say Sphinx is running if flagged as being on a remote machine" do
- ThinkingSphinx.remote_sphinx = true
- ThinkingSphinx.stub!(:sphinx_running_by_pid? => false)
-
- ThinkingSphinx.sphinx_running?.should be_true
- end
-
- it "should actually pay attention to Sphinx if not on a remote machine" do
- ThinkingSphinx.remote_sphinx = false
- ThinkingSphinx.stub!(:sphinx_running_by_pid? => false)
- ThinkingSphinx.sphinx_running?.should be_false
-
- ThinkingSphinx.stub!(:sphinx_running_by_pid? => true)
- ThinkingSphinx.sphinx_running?.should be_true
- end
- end
-
- describe "use_group_by_shortcut? method" do
before :each do
- adapter = defined?(JRUBY_VERSION) ? :JdbcAdapter : :Mysql2Adapter
- unless ::ActiveRecord::ConnectionAdapters.const_defined?(adapter)
- pending "No MySQL"
- return
- end
-
- @connection = stub('adapter',
- :select_all => true,
- :class => ActiveRecord::ConnectionAdapters::Mysql2Adapter,
- :config => {:adapter => defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'}
- )
- ::ActiveRecord::Base.stub!(
- :connection => @connection
- )
-
- ThinkingSphinx.reset_use_group_by_shortcut
+ ThinkingSphinx::Search.stub :new => search
end
- it "should return true if no ONLY_FULL_GROUP_BY" do
- @connection.stub!(
- :select_all => {:a => "OTHER SETTINGS"}
- )
-
- ThinkingSphinx.use_group_by_shortcut?.should be_true
+ it "returns a new search object" do
+ ThinkingSphinx.search.should == search
end
- it "should return true if NULL value" do
- @connection.stub!(
- :select_all => {:a => nil}
- )
+ it "passes through the given query and options" do
+ ThinkingSphinx::Search.should_receive(:new).with('foo', :bar => :baz).
+ and_return(search)
- ThinkingSphinx.use_group_by_shortcut?.should be_true
- end
-
- it "should return true if using mysql2 gem" do
- @connection.stub!(
- :class => ActiveRecord::ConnectionAdapters::Mysql2Adapter,
- :select_all => {:a => ""}
- )
-
- ThinkingSphinx.use_group_by_shortcut?.should be_true
- end unless RUBY_PLATFORM == 'java'
-
- it "should return false if ONLY_FULL_GROUP_BY is set" do
- @connection.stub!(
- :select_all => {:a => "OTHER SETTINGS,ONLY_FULL_GROUP_BY,blah"}
- )
-
- ThinkingSphinx.use_group_by_shortcut?.should be_false
- end
-
- it "should return false if ONLY_FULL_GROUP_BY is set in any of the values" do
- @connection.stub!(
- :select_all => {
- :a => "OTHER SETTINGS",
- :b => "ONLY_FULL_GROUP_BY"
- }
- )
-
- ThinkingSphinx.use_group_by_shortcut?.should be_false
- end
-
- describe "if not using MySQL" do
- before :each do
- adapter = defined?(JRUBY_VERSION) ? 'JdbcAdapter' : 'PostgreSQLAdapter'
- unless ::ActiveRecord::ConnectionAdapters.const_defined?(adapter)
- pending "No PostgreSQL"
- return
- end
-
- @connection = stub(adapter).as_null_object
- @connection.stub!(
- :select_all => true,
- :config => {:adapter => defined?(JRUBY_VERSION) ? 'jdbcpostgresql' : 'postgresql'}
- )
- ::ActiveRecord::Base.stub!(
- :connection => @connection
- )
- end
-
- it "should return false" do
- ThinkingSphinx.use_group_by_shortcut?.should be_false
- end
-
- it "should not call select_all" do
- @connection.should_not_receive(:select_all)
-
- ThinkingSphinx.use_group_by_shortcut?
- end
+ ThinkingSphinx.search('foo', :bar => :baz)
end
end
end