Вот моя спецификация для действия редактирования через флажки.Preference
имеет много Regions
(на самом деле, многие ко многим; отношения работают правильно), и флажки должны добавлять или удалять регионы из предпочтения.
Вот спецификация:
it "saves updated regions when the button is clicked" do
uncheck "preference_region_ids_#{afr.id}"
check "preference_region_ids_#{asia.id}"
click_button "Save"
expect(pref.regions).to_not include afr
expect(pref.regions).to include asia
afr_box = page.all("#preference_region_ids_#{afr.id}").first
expect(afr_box.checked?).to eq false
asia_box = page.all("#preference_region_ids_#{asia.id}").first
expect(asia_box.checked?).to eq true
end
Вот мой метод обновления с контроллера:
def update
@prefs.update(pref_params)
add_home_airport(params) if params[:preference][:home_airport]
delete_vacations(pref_params) if pref_params[:vacations_attributes]
redirect_to preferences_path
end
Когда я тестирую функциональность в моем браузере, он работает.Области правильно изменены, и флажки на перенаправленной странице правильно проверены.
Когда я запускаю спецификацию, если я нажимаю в конце действия update
, я вижу, что оно функционировало правильно.Тем не менее, спецификации не удается.Если я проскользую в спецификацию незадолго до ожидания (после нажатия кнопки «Сохранить»), я вижу, что массив regions
добавил Азию, но не удалил Африку, хотя всего минуту назад подсчет из контроллера показал, что он работает правильно.
Что здесь происходит?