spec/thinking_sphinx_spec.rb in thinking-sphinx-2.0.5 vs spec/thinking_sphinx_spec.rb in thinking-sphinx-2.0.6

- old
+ new

@@ -3,200 +3,201 @@ describe ThinkingSphinx do describe '.context' do it "should return a Context instance" do ThinkingSphinx.context.should be_a(ThinkingSphinx::Context) end - + it "should remember changes to the Context instance" do - models = ThinkingSphinx.context.indexed_models - + models = ThinkingSphinx.context.indexed_models.clone + ThinkingSphinx.context.indexed_models.replace([:model]) ThinkingSphinx.context.indexed_models.should == [:model] - + ThinkingSphinx.context.indexed_models.replace(models) 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 end end - + describe '.define_indexes?' do it "should define indexes by default" do ThinkingSphinx.define_indexes?.should be_true end end - + describe '.define_indexes=' do it "should disable index definition" do ThinkingSphinx.define_indexes = false ThinkingSphinx.define_indexes?.should be_false 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 '.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 '.version' do - it "should return the version from the stored YAML file" do - version = Jeweler::VersionHelper.new( - File.join(File.dirname(__FILE__), '..') - ).to_s - - ThinkingSphinx.version.should == version - end - end - + describe "use_group_by_shortcut? method" do before :each do adapter = defined?(JRUBY_VERSION) ? :JdbcAdapter : :MysqlAdapter unless ::ActiveRecord::ConnectionAdapters.const_defined?(adapter) pending "No MySQL" return end - + @connection = stub('adapter', :select_all => true, :class => ActiveRecord::ConnectionAdapters::MysqlAdapter, :config => {:adapter => defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql'} ) ::ActiveRecord::Base.stub!( :connection => @connection ) - + ThinkingSphinx.reset_use_group_by_shortcut 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 end - + it "should return true if NULL value" do @connection.stub!( :select_all => {:a => nil} ) - + 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 end end end