Initiation aux Frameworks de Programmation Serveur -- RoR TP5-6
Chapitre 5 : Layout, assets, …
Amélioration des tests
Souvenez-vous de ce code vu en cours:
require 'spec_helper'
describe "Static pages" do
subject { page }
describe "Home page" do
before { visit root_path }
it { should have_selector('h1', text: 'Sample App') }
it { should have_selector('title', text: full_title('')) }
it { should_not have_selector 'title', text: '| Home' }
end
describe "Help page" do
before { visit help_path }
it { should have_selector('h1', text: 'Help') }
it { should have_selector('title', text: full_title('Help')) }
end
describe "About page" do
before { visit about_path }
it { should have_selector('h1', text: 'About') }
it { should have_selector('title', text: full_title('About Us')) }
end
describe "Contact page" do
before { visit contact_path }
it { should have_selector('h1', text: 'Contact') }
it { should have_selector('title', text: full_title('Contact')) }
end
end
Le code précédent représente déjà une amélioration en termes de compacité, mais on peut encore l’améliorer en utilisant des exemples partagés (shared example).
Complétez le code suivant (bouchez les trous) pour reproduire le meme résultat que le test précédent avec des exemples partagés. Vérifiez ensuite que les tests sont toujours au vert!
require 'spec_helper'
describe "Static pages" do
subject { page }
shared_examples_for "all static pages" do
it { should have_selector('h1', text: heading) }
it { should have_selector('title', text: full_title(page_title)) }
end
describe "Home page" do
before { visit root_path }
let(:heading) { 'Sample App' }
let(:page_title) { '' }
it_should_behave_like "all static pages"
it { should_not have_selector 'title', text: '| Home' }
end
describe "Help page" do
.
.
.
end
describe "About page" do
.
.
.
end
describe "Contact page" do
.
.
.
end
end
describe "Static pages" do
subject { page }
shared_examples_for "all static pages" do
it { should have_selector('h1', text: heading) }
it { should have_selector('title', text: full_title(page_title)) }
end
describe "Home page" do
before { visit root_path }
let(:heading) { 'Sample App' }
let(:page_title) { '' }
it_should_behave_like "all static pages"
it { should_not have_selector 'title', text: '| Home' }
end
describe "Help page" do
.
.
.
end
describe "About page" do
.
.
.
end
describe "Contact page" do
.
.
.
end
end
Chapitre 6
- Créez le module User et refaites les validations présentées en cours (y compris et surtout les test!)
- Terminer le Chapitre 6 et ajoutez un mot de passe en suivant le tutorial dans le livre de M. Hartl. Notez en passant que la lecture du livre apprend beaucoup de choses, pensez à le lire régulièrement…