For my integration test, I want to check some checkboxes in a form.
But for some reason, Capybara doesn’t check the checkboxes. When I use ‘save_and_open_page’ to view the page in the browser while testing, the checkboxes are not checked.
my form looks like this:
<%= form_for [:admin, @research_project] do |f| %>
<div>
<%= f.label :title %>
<%= f.text_field :title %>
</div>
<div>
<%= f.label :body %>
<%= f.text_area :body %>
</div>
<div>
<%= f.collection_check_boxes :research_theme_ids, ResearchTheme.all, :id, :title %>
</div>
<%= f.submit "Add Research Project" %>
<% end %>
The rendered html looks like this:
<form accept-charset="UTF-8" action="/admin/research_projects" class="new_research_project" id="new_research_project" method="post"><div style="display:none"><input name="utf8" type="hidden" value="✓" /></div>
<div>
<label for="research_project_title">Title</label>
<input id="research_project_title" name="research_project[title]" type="text" />
</div>
<div>
<label for="research_project_body">Body</label>
<textarea id="research_project_body" name="research_project[body]">
</textarea>
</div>
<div>
<input id="research_project_research_theme_ids_1" name="research_project[research_theme_ids][]" type="checkbox" value="1" /><label for="research_project_research_theme_ids_1">voluptas rem consectetur aut quas</label><input id="research_project_research_theme_ids_2" name="research_project[research_theme_ids][]" type="checkbox" value="2" /><label for="research_project_research_theme_ids_2">et non architecto voluptatem aliquam</label><input id="research_project_research_theme_ids_3" name="research_project[research_theme_ids][]" type="checkbox" value="3" /><label for="research_project_research_theme_ids_3">ab consequatur quia ducimus et</label><input name="research_project[research_theme_ids][]" type="hidden" value="" />
</div>
<input name="commit" type="submit" value="Add Research Project" />
</form>
My integration test looks like this:
scenario "Admin adds research themes to research project" do
research_theme_1 = Fabricate(:research_theme)
research_theme_2 = Fabricate(:research_theme)
research_theme_3 = Fabricate(:research_theme)
click_link "Add Research Project"
expect(page).to have_css 'label', text: research_theme_1.title
expect(page).to have_css 'label', text: research_theme_2.title
expect(page).to have_css 'label', text: research_theme_3.title
check("research_project_research_theme_ids_1")
check("research_project_research_theme_ids_2")
click_button "Add Research Project"
@research_project.reload
expect(@research_project.research_themes.count).to eq(2)
end
I’m using Rails 4.1.0 and Capybara 2.3.0
Does anyone know how to solve this problem?
thanks for your help,
Anthony