{"id":25334188,"url":"https://github.com/studoo-app/cyber-tp3-sio2","last_synced_at":"2026-03-04T10:02:10.040Z","repository":{"id":266303771,"uuid":"894181628","full_name":"studoo-app/CYBER-TP3-SIO2","owner":"studoo-app","description":"CYBER - TP Initiation aux tests unitaires et au TDD","archived":false,"fork":false,"pushed_at":"2024-12-03T15:19:35.000Z","size":58,"stargazers_count":0,"open_issues_count":0,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-29T08:40:54.046Z","etag":null,"topics":["2024-2025","cyber","sio2"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/studoo-app.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-25T22:40:33.000Z","updated_at":"2024-12-09T13:09:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"3294eed3-049c-4951-beae-8a7a90856e43","html_url":"https://github.com/studoo-app/CYBER-TP3-SIO2","commit_stats":null,"previous_names":["studoo-app/cyber-tp3-sio2"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/studoo-app/CYBER-TP3-SIO2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studoo-app%2FCYBER-TP3-SIO2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studoo-app%2FCYBER-TP3-SIO2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studoo-app%2FCYBER-TP3-SIO2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studoo-app%2FCYBER-TP3-SIO2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/studoo-app","download_url":"https://codeload.github.com/studoo-app/CYBER-TP3-SIO2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studoo-app%2FCYBER-TP3-SIO2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30078306,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T08:01:56.766Z","status":"ssl_error","status_checked_at":"2026-03-04T08:00:42.919Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2024-2025","cyber","sio2"],"created_at":"2025-02-14T05:37:13.814Z","updated_at":"2026-03-04T10:02:10.032Z","avatar_url":"https://github.com/studoo-app.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"![separe](https://github.com/studoo-app/.github/blob/main/profile/studoo-banner-logo.png)\n# CYBER TP2 SIO 3 : Tests Unitaires et Développement Piloté par les Tests (TDD)\n[![Version](https://img.shields.io/badge/Version-2024-blue)]()\n\n## Introduction aux Tests Unitaires\n### Définition :\nLes tests unitaires sont des tests automatisés qui permettent de vérifier que chaque unité fonctionnelle\n(méthode, fonction, classe) d'une application fonctionne comme attendu. Chaque test isole une partie spécifique du code\npour détecter rapidement les erreurs.\n\n### Avantages :\n\n- Détection précoce des bogues.\n- Prévention des régressions lors des modifications du code.\n- Documentation implicite du comportement attendu.\n- Amélioration de la confiance dans le déploiement du logiciel.\n\nLes tests unitaires s’intègrent dans le cycle de développement moderne pour garantir la qualité du code,\nen particulier dans les projets collaboratifs ou complexes.\n\n### Mise en application\n\n#### Tester une entité\n\nCréer une entité User avec les attributs name et email, puis créer les tests unitaires pour vérifier que les attributs\nsont bien initialisés.\n\n#### Tester un service\n\nTester le service CalculatorService qui contient une méthode add qui prend deux entiers en paramètres\net retourne leur somme.\n\n#### Tester un contrôleur\n\nTester le contrôleur HelloController qui contient une méthode hello qui prend un paramètre name et\nretourne un message\n\n#### Tester les validateurs d'une entité\n\nAjouter des validateurs pour l'entité User pour vérifier que le nom et l'email ne sont pas vides.\nCréer les tests unitaires pour vérifier que les validateurs fonctionnent correctement.\n\n#### Tester un repository\n\nCréer une entité Product avec les attributs name et price.\nDans le repository ProductRepository, ajouter une méthode pour récupérer les produits dont le prix est supérieur à un montant donné.\nCréer les tests unitaires pour vérifier que la méthode fonctionne correctement.\n\n## Introduction au Développement Piloté par les Tests (TDD)\n### Définition\nLe Test Driven Development (TDD) est une méthodologie de développement où les tests sont écrits avant le code de production. Le cycle de développement suit trois étapes :\n\n- Rouge : Écrire un test qui échoue.\n- Vert : Écrire le minimum de code pour faire passer le test.\n- Refactorisation : Nettoyer et optimiser le code.\n\n### Avantages :\nLe TDD garantit que chaque fonctionnalité est testée dès le départ.\nIl améliore la conception en incitant à écrire un code simple et modulaire.\n\n### Mise en application\n\n#### Développer le service DiscountCalculatorService en TDD\n\nLe service DiscountCalculatorService contient une méthode calculateDiscount qui prend un montant et un pourcentage\nde réduction en paramètres et retourne le montant après réduction.\n\nPour ce faire, implémenter le test suivant :\n\n```php\nnamespace App\\Tests\\Service;\n\nuse App\\Service\\DiscountCalculator;\nuse PHPUnit\\Framework\\TestCase;\n\nclass DiscountCalculatorTest extends TestCase\n{\n    public function testCalculateDiscount(): void\n    {\n        $calculator = new DiscountCalculator();\n        $result = $calculator-\u003ecalculate(200, 20); // 20% de réduction\n\n        $this-\u003eassertEquals(160, $result);\n    }\n\n    public function testCalculateDiscountWithInvalidInput(): void\n    {\n        $calculator = new DiscountCalculator();\n\n        $this-\u003eexpectException(\\InvalidArgumentException::class);\n        $calculator-\u003ecalculate(-100, 20); // Prix invalide\n    }\n}\n\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudoo-app%2Fcyber-tp3-sio2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstudoo-app%2Fcyber-tp3-sio2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudoo-app%2Fcyber-tp3-sio2/lists"}