Я тестирую форму в приложении Rails, используя Capybara.capybara не передает параметры выбора
Форма имеет 2 блока выбора, каждый по умолчанию. Эти параметры передаются как параметры, когда форма представлена в процессе разработки и производства, но по какой-то причине Capybara не отправляет их при тестировании. Capybara находит флажки для выбора и опции OK, потому что если я поставлю несуществующие опции, это вызовет ошибку. Но Capybara не передает ни по умолчанию, ни выбранную опцию в качестве параметра при отправке формы.
форма фрагмент выглядит следующим образом:
<%= form_for(@reservation, :url => account_reservations_path(account.id), remote: false, :html=>{:id=>'dates_form'}) do |f| %>
<tr>
<td style:"text-align:center" colspan="2"><%= f.submit 'Submit Dates, Source of Booking & Room Preference', class: "btn btn-primary btn-sm" %></td>
</tr>
<td>
<%= f.text_field :check_in_date, id: check_in_date_id, placeholder: "Check In Date" %></td>
<td><%= f.text_field :check_out_date, id: check_out_date_id, placeholder: "Check Out Date" %></td>
</tr>
<tr>
<td colspan="1"><%= f.select(:source_of_booking, Reservation::SOURCE_OF_BOOKING, {}, {:style => "width:150px;", default: Reservation::SOURCE_OF_BOOKING[0]}) %></td>
<td>
<%= f.select(:bed_preference, @bed_options, {}, {:style => "width:100px;"}) %>
</td>
</tr>
<% end %>
Обработка представления формы сервером рельсов выглядит следующим образом:
Processing by ReservationsController#create as HTML
Параметры: { "utf8 "=>" ✓ "," authenticity_token "=>" 7Q3jakPp91bleWe1qZQFGRvYTXIxj9AdIYbeVtrF3bg = "," commit "=>" Отправить даты, источник бронирования & «Предпочтение номеров», «бронирование» => {«check_in_date» => «Пятница, 29 июля 2016 года», «check_out_date» => «Понедельник, 1 августа 2016 года», «source_of_booking» => «Email Direct», bed_preference "=>" Queen "}, "account_id"=>" 5015" }
Но Капибара параметры из выбранных опций отсутствует, несмотря на то, что они имеют значения по умолчанию
Started POST "/accounts/625262370/reservations" for 127.0.0.1 at 2016-07-25 18:23:59 -0500
Обработка ReservationsController #create as HTML Параметры: {"utf8" => "✓", "reservation" => {"check_in_date" => "2016-07-25", "check_out_date" => "2016-07-28"}, «commit» => «Отправить даты, источник бронирования &« Предпочтение номеров »,« account_id »=>« 625262370 »}
В тестовом коде нет ошибок до тех пор, пока окончательная страница ожидания не получит текст. Подтверждено, поэтому Capybara находит окно выбора, но не обрабатывает его.
it "should add a new reservation for room category", :focus => true do
fill_in('reservation[check_in_date]', :with => Date.today.to_s)
fill_in('reservation[check_out_date]', :with => (Date.today + 3).to_s)
select 'Twin', :from => 'reservation[bed_preference]'
click_button("Submit Dates, Source of Booking & Room Preference")
expect(page).to have_text("CONFIRMED")
end
Какой драйвер вы используете с Capybara? –