Я пытаюсь написать интеграционный тест для простого маршрута создания и могу использовать некоторую помощь. Все работает просто отлично, включая перенаправление, но когда я проверяю, есть ли у сообщения верный ответ, он говорит, что получен ответ 500, а не 200. Вот код:
Интеграционный тест :
require 'test_helper'
class CreateEventTest < ActionDispatch::IntegrationTest
fixtures :users
test "can login and create an event" do
get "/login"
assert_response :success
post "/login", params: {user_name: users(:one).user_name, password: 'secret'}
follow_redirect!
assert_equal 200, status
assert_equal "/", path
get "/events/new"
assert_response :success
post '/events', params: { event: { name: "Event Title", description: "Description", location: "Search Results
1600 Pennsylvania Ave NW, Washington, DC 20500", date_from: DateTime.now + 10, date_to: DateTime.now + 15, latitude: -35.000000, longitude: 100.000000}}
assert_response :redirect
follow_redirect!
assert_response :created # Returns a 500 rather than a 201
end
end
Контроллер событий:
def create
@event = Event.new(event_params)
respond_to do | format |
if @event.save
if(params.require(:event).key?("tags"))
tags = Tag.find(params.require(:event)['tags'])
else
tags = Tag.find_by(name: "Other") # Set default tag if none was selected
end
@event.tags << tags
UserEventRelationship.create(event_id: @event.id, user_id: current_user.id, role_type_id: 0)
format.html { redirect_to @event, notice: 'Event was successfully created.' }
format.json { render json: @event, status: :created, location: @event }
else
format.html {render 'new'}
format.json {render json: @event.errors, status: :unprocessable_entity }
end
end
end
def event_params
params.require(:event).permit(:name, :date_from,
:location, :date_to, :description, :picture, :tags, :latitude, :longitude)
end
Вот ошибка, которую я получаю:
Failure:
CreateEventTest#test_can_login_and_create_an_event [/Users/user/Documents/GitHub/myapp/test/integration/create_event_test.rb:21]:
Expected response to be a <201: created>, but was a <500: Internal Server Error>.
Expected: 201
Actual: 500