RSpec have_tag et Rails assert_select cheat sheet

have_tag (RSpec) et assert_select (Rails) facilitent le test des vues grâce à une syntaxe proche de celle du CSS. Vérifions par exemple la présence d’un titre qui contient le texte Subtitle et d’un formulaire (id= »swap ») avec deux boutons radio et un bouton de soumission (class= »button_save ») :

response.should have_tag("h2", /Subtitle/)
response.should have_tag("form#swap[method=post]")
response.should have_tag("form#swap input[type=radio][name=?]", 'part1')
response.should have_tag("form#swap input[type=radio][name=?]", 'part2')
response.should have_tag("form#swap input.button_save[type=submit]")

Autre exemple, un formulaire AJAX dans sa div (id= »filter », mais vous avez compris maintenant) avec une liste déroulante, avec soumission par GET sur changement de la sélection :

response.should have_tag("select option", "All")
response.should have_tag("select option", /20/)
response.should_not have_tag("select option", /21/)
response.should have_tag("div#filter form[method=?]", 'get')
response.should have_tag("div#filter form select[onchange=?]", 'this.form.submit()')

La syntaxe du sélecteur a beau être proche de celle du CSS, il est difficile de s’en rappeler toutes les subtilités. C’est là qu’intervient l’excellente cheat sheet créée par Assaf Arkin de Labnotes. Indispensable