Долго с этим боролся, перепробовал черт знает сколько комбинаций - безрезультатно. Кажется, несколько других на SO и Google не смогли решить эту проблему.
По сути, я публикую действие :update на моем контроллере во встроенной среде функционального тестирования Rails 4. Мое приложение является строго JSON API, поэтому мне нужно опубликовать запрос :update как запрос JSON. Все прекрасно работает в дикой природе, но синтаксис функционального теста не может понять, что мне нужно.
Вот моя текущая попытка:
test "should be able to update location" do
post :update, id: 1, format: :json, '{"is_private": "false"}'
get :show, id: 1, format: :json
assert_equal json['data'][0]['is_private'], false
end
Запуск rake test приводит к синтаксической ошибке:
unexpected '\n', expecting =>
Для ясности мое действие контроллера выглядит так:
def update
@location = Location.find(params[:id])
if @location.update_attributes(ActiveSupport::JSON.decode(request.body.read))
api_response(@location)
else
respond_with api_error
end
end
Что мне здесь не хватает? Возможно ли вообще тестировать сообщения JSON с помощью встроенной среды функционального тестирования Rails 4? Официальная документация довольно кратка по этому вопросу.