test mesure completion
This commit is contained in:
parent
d2c0326231
commit
e72922bc57
1 changed files with 217 additions and 0 deletions
217
tests/Entity/StatsTest.php
Normal file
217
tests/Entity/StatsTest.php
Normal file
|
@ -0,0 +1,217 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Tests\Entity;
|
||||||
|
|
||||||
|
use App\Entity\Place;
|
||||||
|
use App\Entity\Stats;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class StatsTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testComputeCompletionPercentWithPerfectPlace()
|
||||||
|
{
|
||||||
|
// Créer un objet Stats
|
||||||
|
$stats = new Stats();
|
||||||
|
$stats->setZone('12345');
|
||||||
|
|
||||||
|
// Créer un lieu avec une complétion parfaite (100%)
|
||||||
|
$perfectPlace = new Place();
|
||||||
|
$perfectPlace->setName('Restaurant Test')
|
||||||
|
->setHasAddress(true)
|
||||||
|
->setHasWebsite(true)
|
||||||
|
->setHasWheelchair(true)
|
||||||
|
->setHasOpeningHours(true)
|
||||||
|
->setSiret('12345678901234')
|
||||||
|
->setNoteContent('Note de test'); // Les notes ne comptent pas dans la complétion
|
||||||
|
|
||||||
|
// Ajouter le lieu aux stats
|
||||||
|
$stats->addPlace($perfectPlace);
|
||||||
|
|
||||||
|
// Calculer le pourcentage de complétion
|
||||||
|
$completionPercent = $stats->computeCompletionPercent();
|
||||||
|
|
||||||
|
// Vérifier que le résultat est 100%
|
||||||
|
$this->assertEquals(100, $completionPercent);
|
||||||
|
|
||||||
|
// Vérifier que les compteurs sont corrects
|
||||||
|
$this->assertEquals(1, $stats->getAvecAdresse());
|
||||||
|
$this->assertEquals(1, $stats->getAvecSite());
|
||||||
|
$this->assertEquals(1, $stats->getAvecAccessibilite());
|
||||||
|
$this->assertEquals(1, $stats->getAvecHoraires());
|
||||||
|
$this->assertEquals(1, $stats->getAvecSiret());
|
||||||
|
$this->assertEquals(1, $stats->getAvecName());
|
||||||
|
$this->assertEquals(1, $stats->getAvecNote());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testComputeCompletionPercentWithPartialPlace()
|
||||||
|
{
|
||||||
|
// Créer un objet Stats
|
||||||
|
$stats = new Stats();
|
||||||
|
$stats->setZone('12345');
|
||||||
|
|
||||||
|
// Créer un lieu avec une complétion partielle (67% - 4 critères sur 6)
|
||||||
|
$partialPlace = new Place();
|
||||||
|
$partialPlace->setName('Café Test')
|
||||||
|
->setHasAddress(true) // ✓
|
||||||
|
->setHasWebsite(false) // ✗
|
||||||
|
->setHasWheelchair(true) // ✓
|
||||||
|
->setHasOpeningHours(false) // ✗
|
||||||
|
->setSiret('12345678901234') // ✓
|
||||||
|
->setNoteContent('Note de test'); // Les notes ne comptent pas
|
||||||
|
|
||||||
|
// Ajouter le lieu aux stats
|
||||||
|
$stats->addPlace($partialPlace);
|
||||||
|
|
||||||
|
// Calculer le pourcentage de complétion
|
||||||
|
$completionPercent = $stats->computeCompletionPercent();
|
||||||
|
|
||||||
|
// Vérifier que le résultat est 67% (4/6 * 100)
|
||||||
|
$this->assertEquals(67, $completionPercent);
|
||||||
|
|
||||||
|
// Vérifier que les compteurs sont corrects
|
||||||
|
$this->assertEquals(1, $stats->getAvecAdresse());
|
||||||
|
$this->assertEquals(0, $stats->getAvecSite());
|
||||||
|
$this->assertEquals(1, $stats->getAvecAccessibilite());
|
||||||
|
$this->assertEquals(0, $stats->getAvecHoraires());
|
||||||
|
$this->assertEquals(1, $stats->getAvecSiret());
|
||||||
|
$this->assertEquals(1, $stats->getAvecName());
|
||||||
|
$this->assertEquals(1, $stats->getAvecNote());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testComputeCompletionPercentWithEmptyPlace()
|
||||||
|
{
|
||||||
|
// Créer un objet Stats
|
||||||
|
$stats = new Stats();
|
||||||
|
$stats->setZone('12345');
|
||||||
|
|
||||||
|
// Créer un lieu avec aucune complétion (0%)
|
||||||
|
$emptyPlace = new Place();
|
||||||
|
$emptyPlace->setName(null)
|
||||||
|
->setHasAddress(false)
|
||||||
|
->setHasWebsite(false)
|
||||||
|
->setHasWheelchair(false)
|
||||||
|
->setHasOpeningHours(false)
|
||||||
|
->setSiret(null)
|
||||||
|
->setNoteContent(null);
|
||||||
|
|
||||||
|
// Ajouter le lieu aux stats
|
||||||
|
$stats->addPlace($emptyPlace);
|
||||||
|
|
||||||
|
// Calculer le pourcentage de complétion
|
||||||
|
$completionPercent = $stats->computeCompletionPercent();
|
||||||
|
|
||||||
|
// Vérifier que le résultat est 0%
|
||||||
|
$this->assertEquals(0, $completionPercent);
|
||||||
|
|
||||||
|
// Vérifier que les compteurs sont corrects
|
||||||
|
$this->assertEquals(0, $stats->getAvecAdresse());
|
||||||
|
$this->assertEquals(0, $stats->getAvecSite());
|
||||||
|
$this->assertEquals(0, $stats->getAvecAccessibilite());
|
||||||
|
$this->assertEquals(0, $stats->getAvecHoraires());
|
||||||
|
$this->assertEquals(0, $stats->getAvecSiret());
|
||||||
|
$this->assertEquals(0, $stats->getAvecName());
|
||||||
|
$this->assertEquals(0, $stats->getAvecNote());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testComputeCompletionPercentWithMultiplePlaces()
|
||||||
|
{
|
||||||
|
// Créer un objet Stats
|
||||||
|
$stats = new Stats();
|
||||||
|
$stats->setZone('12345');
|
||||||
|
|
||||||
|
// Créer un lieu parfait (100%)
|
||||||
|
$perfectPlace = new Place();
|
||||||
|
$perfectPlace->setName('Restaurant Parfait')
|
||||||
|
->setHasAddress(true)
|
||||||
|
->setHasWebsite(true)
|
||||||
|
->setHasWheelchair(true)
|
||||||
|
->setHasOpeningHours(true)
|
||||||
|
->setSiret('12345678901234');
|
||||||
|
|
||||||
|
// Créer un lieu vide (0%)
|
||||||
|
$emptyPlace = new Place();
|
||||||
|
$emptyPlace->setName(null)
|
||||||
|
->setHasAddress(false)
|
||||||
|
->setHasWebsite(false)
|
||||||
|
->setHasWheelchair(false)
|
||||||
|
->setHasOpeningHours(false)
|
||||||
|
->setSiret(null);
|
||||||
|
|
||||||
|
// Ajouter les lieux aux stats
|
||||||
|
$stats->addPlace($perfectPlace);
|
||||||
|
$stats->addPlace($emptyPlace);
|
||||||
|
|
||||||
|
// Calculer le pourcentage de complétion
|
||||||
|
$completionPercent = $stats->computeCompletionPercent();
|
||||||
|
|
||||||
|
// Vérifier que le résultat est 50% (moyenne de 100% et 0%)
|
||||||
|
$this->assertEquals(50, $completionPercent);
|
||||||
|
|
||||||
|
// Vérifier que les compteurs sont corrects
|
||||||
|
$this->assertEquals(1, $stats->getAvecAdresse());
|
||||||
|
$this->assertEquals(1, $stats->getAvecSite());
|
||||||
|
$this->assertEquals(1, $stats->getAvecAccessibilite());
|
||||||
|
$this->assertEquals(1, $stats->getAvecHoraires());
|
||||||
|
$this->assertEquals(1, $stats->getAvecSiret());
|
||||||
|
$this->assertEquals(1, $stats->getAvecName());
|
||||||
|
$this->assertEquals(0, $stats->getAvecNote());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testComputeCompletionPercentWithNoPlaces()
|
||||||
|
{
|
||||||
|
// Créer un objet Stats sans lieux
|
||||||
|
$stats = new Stats();
|
||||||
|
$stats->setZone('12345');
|
||||||
|
|
||||||
|
// Calculer le pourcentage de complétion
|
||||||
|
$completionPercent = $stats->computeCompletionPercent();
|
||||||
|
|
||||||
|
// Vérifier que le résultat est 0%
|
||||||
|
$this->assertEquals(0, $completionPercent);
|
||||||
|
|
||||||
|
// Vérifier que les compteurs sont corrects
|
||||||
|
$this->assertEquals(0, $stats->getAvecAdresse());
|
||||||
|
$this->assertEquals(0, $stats->getAvecSite());
|
||||||
|
$this->assertEquals(0, $stats->getAvecAccessibilite());
|
||||||
|
$this->assertEquals(0, $stats->getAvecHoraires());
|
||||||
|
$this->assertEquals(0, $stats->getAvecSiret());
|
||||||
|
$this->assertEquals(0, $stats->getAvecName());
|
||||||
|
$this->assertEquals(0, $stats->getAvecNote());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testNotesDoNotCountInCompletion()
|
||||||
|
{
|
||||||
|
// Créer un objet Stats
|
||||||
|
$stats = new Stats();
|
||||||
|
$stats->setZone('12345');
|
||||||
|
|
||||||
|
// Créer un lieu avec seulement des notes (0% de complétion)
|
||||||
|
$placeWithNotes = new Place();
|
||||||
|
$placeWithNotes->setName(null)
|
||||||
|
->setHasAddress(false)
|
||||||
|
->setHasWebsite(false)
|
||||||
|
->setHasWheelchair(false)
|
||||||
|
->setHasOpeningHours(false)
|
||||||
|
->setSiret(null)
|
||||||
|
->setNoteContent('Note importante')
|
||||||
|
->setHasNote(true);
|
||||||
|
|
||||||
|
// Ajouter le lieu aux stats
|
||||||
|
$stats->addPlace($placeWithNotes);
|
||||||
|
|
||||||
|
// Calculer le pourcentage de complétion
|
||||||
|
$completionPercent = $stats->computeCompletionPercent();
|
||||||
|
|
||||||
|
// Vérifier que le résultat est 0% (les notes ne comptent pas)
|
||||||
|
$this->assertEquals(0, $completionPercent);
|
||||||
|
|
||||||
|
// Vérifier que les compteurs sont corrects
|
||||||
|
$this->assertEquals(0, $stats->getAvecAdresse());
|
||||||
|
$this->assertEquals(0, $stats->getAvecSite());
|
||||||
|
$this->assertEquals(0, $stats->getAvecAccessibilite());
|
||||||
|
$this->assertEquals(0, $stats->getAvecHoraires());
|
||||||
|
$this->assertEquals(0, $stats->getAvecSiret());
|
||||||
|
$this->assertEquals(0, $stats->getAvecName());
|
||||||
|
$this->assertEquals(1, $stats->getAvecNote()); // Les notes sont comptées séparément
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue