# Design orienté objet avec ruby en TDD ## Ressources * [SOLID principles in ruby](https://subvisual.co/blog/posts/19-solid-principles-in-ruby/) - **[débutant]** Article de blog qui illustre avec des exemples simples en ruby les 5 principes SOLID * [Learn RSpec](https://semaphoreci.com/community/series/learn-rspec) - **[débutant - intermédiaire]** Comment tester son code ruby avec RSpec, série de 3 articles * [Série de 5 articles pour comprendre SOLID avec des exemples](http://rubyblog.pro/2017/05/solid-single-responsibility-principle-by-example) - **[intermédiaire]** * [Practical Object-Oriented Design in Ruby (POODR)](https://www.poodr.com/) - **[intermédiaire - avancé]** Livre écrit par [Sandi Metz](https://www.sandimetz.com/) > POODR* is a practical, readable introduction to how Object Oriented Design can lower your costs and improve your applications. ## Exercice 1. Cloner le depot git dispo à cette adresse: https://github.com/lucaminudel/TDDwithMockObjectsAndDesignPrinciples 2. Trouver le permier exercice sur l'Alarme de pression: * `TDDMicroExercises/Ruby/tire_pressure_monitoring_system` 3. Mettre en place rspec, et écrire un premier test vide * pour vérifier que rspec est bien installé 4. Ecrire les tests unitaires pour la classe `Alarm` et factoriser le code pour le rendre plus testable et respecter au mieux les principes SOLID * durant ce travail minimiser les changements sur l'API publique de la classe. * durant l'exercice seule la classe `Alarm` doit être modifiée. > La class `Alarm` est conçue pour monitorer la pression d'un pneu et détecter si cette pression dépasse les valeurs limites. > La classe `Sensor` fournie dans l'exercice simule le comportement d'un capteur de pression réel. Elle fourni des valeur aléatoires mais réalistes.