У меня есть форма в файле ERB, которая в конечном итоге отправляет PATCH в edit_user_path (@user).Вот первая строка кода для формы (единственной релевантной частью является URL):
<%= form_with(model: @user, local:true, url: edit_user_path(@user)) do |f| %>
, который создает следующий HTML-код:
<form action="/users/1/edit" accept-charset="UTF-8" method="post">
<input type="hidden" name="_method" value="patch">
(Rails использует скрытый вводс помощью value = "patch", чтобы браузеры не могли на самом деле сделать PATCH)
(в приведенном выше примере я редактировал пользователя с идентификатором 1)
Так что теперь у меня естьОБРАТИТЕСЬ к edit_user_path (@user).
Теперь, когда моя форма успешно создает указанный выше HTML, я хочу проверить очень специфическую часть этого HTML: form action="/users/1/edit"
Мой планиспользовать утверждение, но у меня возникают проблемы с тем, как его написать, или если это вообще возможно:
assert_select 'form[action="/users/1/edit"]'
проблема (я думаю) в том, что я использую приборы длясоздать пользователя в базе данных.Вот код фикстур (в файле test / fixtures / users.yml):
test_user:
name: Mr. Test
email: test@email.com
password_digest: <%= User.digest('password') %>
А вот и полный тест:
class UsersEditTest < ActionDispatch::IntegrationTest
def setup
@user = users(:test_user) # assinging @user to the user in my fixture file
end
test "Editing user with invalid user attributes" do
patch edit_user_path(@user), params: {user: { name: "",
email: "foo@invalid",
password: "hey",
password_confirmation: "ho"
}
}
assert_select 'form[action="/users/???/edit"]'
end
проблема (я думаю) Iя сталкиваюсь с тем, что я не знаю, какой идентификатор пользователя для пользователя в моем файле фикстур (assert_select 'form[action="/users/1/edit"]'
)
Кто-нибудь знает, как найти идентификатор ресурса, сгенерированного из фикстур?А также, как правильно построить утверждение assert_select 'form[action="/users/???/edit"]'
?