- Cloner le projet :
git clone [email protected]:mhcommunication/golden-master.git
- Installer Virtualbox : https://www.virtualbox.org/wiki/Downloads
- Installer Vagrant : https://www.vagrantup.com/downloads.html
- Se rendre dans le répertoire du projet et appeler
vagrant up
- Prendre un café ☕
- Une fois la machine virtuelle installé, s'y rendre en SSH :
vagrant ssh
- Se rendre dans le répertoire du projet :
cd /vagrant
- Pour chaque étape, un
git checkout <etape>
amène sur le code correspondant
Lancer bash <(curl -s https://gist.githubusercontent.com/msadouni/4082c33a5323b22ee58e/raw/9bccae435efc77f80bbb363969d3ca44d649d5a4/reset.sh)
pour revenir à l'état initial de l'application.
On utilise rspec et capybara pour récupérer la sortie HTML de l'application et vérifier qu'elle ne change pas.
Pour chaque page testée :
- on appelle la suite de tests,
- on vérifie que la sortie convient,
- on l'approuve.
rspec
Le fichier .lockdown/received/home.html
contient le code reçu pour la page d'accueil. Il est correct, on l'approuve avec rake approve[home]
.
rspec
Le code reçu pour l'accueil est bien conforme à celui approuvé.
rspec
Le fichier .lockdown/received/post.html
contient le code reçu pour la page d'un article. Il est correct, on l'approuve avec rake approve[post]
.
rspec
Le code reçu pour l'article est bien conforme à celui approuvé.
L'inspection du fichier app/Controller/PostsController.php
montre que du code SQL est appelé directement et sans protection contre les injections.
Le code SQL des controllers est remplacé par des appels aux méthodes de CakePHP.
Le code des vues est ajusté au nouveau format de résultats.
La page d'un article affiche une liste des autres articles, mais l'article en cours y est également présent.
Le bug est corrigé. Un appel à rspec
montre que le GM n'est plus à jour.
Le code reçu dans .lockdown/received/post.html
est correct, on l'approuve avec rake approve[post]
.
On peut effectuer une passe de refactoring sur le code en extrayant le code spécifique au model dans une méthode dédiée. Un rspec
nous assure que tout est fonctionnel.
On utilise phpbrew pour changer facilement de version de PHP.
En passant sur PHP 5.4 avec php54
, un écran blanc s'affiche et rspec
montre que les pages html reçues sont vides.
En inspectant le code on remarque que app/Config/bootstrap.php
appelle la fonction set_magic_quotes_runtime(true);
qui est supprimée en PHP 5.4.
La suppression de set_magic_quotes_runtime(true);
remet les tests au vert.
La version de CakePHP est obsolète, on décide de la mettre à jour en avec la version 3.
Cette version nécessite l'extension intl
, on lance ./install_intl_extension.sh
pour l'installer.
Le code est mis à jour pour CakePHP 3, on lance ./update_for_cakephp3.sh
pour l'installer.
rspec
montre que la troncation du texte des articles a changé. Après lecture de la documentation, on s'aperçoit que cela vient de la correction d'un bug dû aux accents et à l'UTF-8. Il n'est pas souhaitable de réintroduire ce bug, l'impact est faible et l'affichage préférable car les mots ne sont plus coupés au milieu.
On approuve la nouvelle version avec rake approve[home]
.
On pourra continuer les mises à jour :
- remplacer la syntaxe utilisée en PHP 5.4 pour les tableaux de
array()
à[]
, - remplacer les sorties dans les templates de
<?php echo ...; ?>
à<?= ?>
, - etc.
Les textes des articles proviennent du site Le Gorafi.