Search code examples
ruby-on-rails-3functional-testingthinking-sphinx

Problem with Thinking Sphinx and Functional Tests


this is my test (with shoulda helpers):

  context "searching from header" do
    setup do
      Factory(:city, :name => 'Testing It')
      ThinkingSphinx::Test.index 'city_core', 'city_delta'
      ThinkingSphinx::Test.start

      get :index,
          :query => 'Testing It'
    end

    should respond_with(:success)
    should assign_to(:results)
    should "have one city on the result" do
      assert_equal( assigns(:results).count, 1 )
      assert_kind_of( assigns(:results).first, City )
    end

    ThinkingSphinx::Test.stop
  end

Everything works fine except the test always say the count of the results is 0, not 1.

I have debugged this code and when the request reaches the controller, the Sphinx indexes are completely empty, even with the explicit call of index for it.

Am I doing something wrong here?

Any help appreciated.


Solution

  • I found out the problem... even tho the insertion in the database is right before the ThinkingSphinx.index, with transactional fixtures, after the setup block the records get deleted.

    The solution was adding to the test the following line:

    self.use_transactional_fixtures = false
    

    Hope this helps anyone with the same problem.