У меня есть модель пользователя, запрос помощника и контроллер: помощник содержит метод, который возвращает список пользователей при отправке запроса поискового запроса из представления:
class UserQueryHelper
def initialize( query = nil )
@query = Arel.sql("UNACCENT('%#{ query }%')")
end
def search
User.where( first_name.matches( @query ).or( last_name.matches( @query ) ))
end
protected
def users ; User.arel_table ; end
def first_name
Arel::Nodes::NamedFunction.new( "UNACCENT", [ users[ :first_name ] ] )
end
def last_name
Arel::Nodes::NamedFunction.new( "UNACCENT", [ users[ :last_name ] ] )
end
end
в модели, которую я называю этим помощником:
def self.search( query )
if query.present?
UserQueryHelper.new( query ).search
else
all
end
end
и в контроллере я получаю список пользователей, которых ищет администратор:
users_to_export = User.regular.search(params[:search]).includes( :company )
Я хочу написать какой-то модульный тест для этого, и у меня не было правильного способа сделать это, и я попробовал этот код, но он не работает:
require 'spec_helper'
describe UserQueryHelper do
let!( :query ) { UserQueryHelper.new( "sahnoun" ) }
it "return user" do
user1 = create :user, first_name: "sahnoun", last_name: "mabrouk", company: $company
expect( query.send( :search ) ).to include user1
end
end