Я обновляю устаревший проект до rails 5.0, и сейчас один из тестов не проходит.Тест выглядит следующим образом:
describe "tag searching" do
before (:each) do
@admin = FactoryGirl.create(:admin)
stub_authenticate_client(@admin)
end
it "doesnt break a badly formatted tag search" do
get :search, params: {search: {tags: "a"}}
expect(assigns(:tags)).to_not be_nil
expect(assigns(:reports)).to_not be_nil
end
it "doesnt break with a search with no tag params" do
get :search, params: {search: {}}
expect(assigns(:tags)).to_not be_nil
expect(assigns(:reports)).to_not be_nil
end
end
Ошибка возникает во втором тесте, поиск без параметров тега.В моем контроллере я вызываю params[:search][:tags]
и получаю
Failure/Error: if params[:search][:tags].nil?
NoMethodError:
undefined method `[]' for nil:NilClass
Кажется, что параметр поиска не проходит, но он работает с первым тестом.
Контроллер:
def search
search_params = params['search']
@reports = Report.includes([Report::TAG_CATEGORIES.keys].flatten)
.paginate(:page => params['page'],
:per_page => 50)
tags = extract_tags_from_params(search_params['tags']) # ERROR HERE
tags.each do |category, search_values|
@reports = @reports.tagged_with(search_values, match: :all, on: category) if !search_values.blank?
end
@reports = @reports.where(#some queries related to search param)
@tags = Report.flattened_tags
render 'index'
end
def search_params
params.permit(search: {})
end
Есть мысли?