Question

Dans le cadre du développement d'une application web au sein de votre entreprise, vous avez la charge de mettre en place un message de bienvenue personnalisé en fonction du genre de l'utilisateur.

Ainsi :

  • Une femme aura un message du type « Bienvenue Mme ... » suivi de son nom,

  • Un homme aura un message du type « Bienvenue M. ... » suivi de son nom.

La première partie de cet exercice consistera donc à implémenter cette méthode au sein d'une classe WelcomeMessage dans le répertoire src/Util de votre application Symfony.

Dans une classe dédiée, implémentez une méthode chargée de tester la méthode écrite dans la première partie de l'exercice et utilisant un Data Provider pour tester toutes les configurations possibles.

Solution

La classe à tester :

1
<?php
2
# src/Util/WelcomeMessage.php
3
namespace App\Util;
4
5
class WelcomeMessage {
6
    public function welcome($name, $gender) {
7
        if($gender === "Homme") {
8
            return 'Bienvenue M. ' . $name;
9
        } else {
10
            return 'Bienvenue Mme ' . $name;
11
        } 
12
    }
13
}

La classe de test :

1
<?php
2
# tests/Util/WelcomeMessageTest.php
3
namespace Tests\Util;
4
5
use App\Util\WelcomeMessage;
6
use PHPUnit\Framework\TestCase;
7
8
class WelcomeMessageTest extends TestCase {
9
    /**
10
     * @dataProvider welcomeProvider
11
     */
12
    public function testWelcome($name, $gender, $expected) {
13
        $welcomeMessage = new WelcomeMessage();
14
        $this->assertSame($expected, $welcomeMessage->welcome($name, $gender));
15
    }
16
17
    public function welcomeProvider()
18
    {
19
        return [
20
            ["Chris", "Homme", "Bienvenue M. Chris"],
21
            ["Fanny", "Femme", "Bienvenue Mme Fanny"]
22
        ];
23
    }
24
}