corentin_wakdo/tests/Unit/Auth/UserDirectoryTest.php
Imugiii eed2daffb0
All checks were successful
CI / secret-scan (push) Successful in 16s
CI / secret-scan (pull_request) Successful in 17s
CI / php-lint (pull_request) Successful in 40s
CI / php-lint (push) Successful in 41s
CI / static-tests (push) Successful in 1m14s
CI / js-tests (push) Successful in 46s
CI / static-tests (pull_request) Successful in 1m15s
CI / js-tests (pull_request) Successful in 42s
feat(back-office): refonte saisie commande comptoir/drive (prix, verrou, nav, file)
7 ameliorations de la page de saisie comptoir/drive, inutilisable au quotidien :
- prix par ligne + total + bouton "Encaisser X,XX EUR" (l'equipier encaissait
  sans voir aucun montant) ;
- verrou drive reel (affichage fige + input hidden ; readonly sur un select est
  sans effet HTML) ;
- lien de nav "Saisie commande" route selon le canal du role (un equipier drive
  atterrissait au comptoir) ;
- champ quantite desactive pour un produit personnalisable (sa saisie etait
  ignoree en silence) ;
- file "En cours" (commandes payees du canal, plus ancienne d'abord) au-dessus
  de l'historique ;
- feedback prix Normal/Maxi dans la liste et le total de ligne ;
- numero de table (dine_in comptoir), groupage par categorie, modale a overlay
  + fermeture Echap + message requis inline.

Serveur autoritatif inchange (les prix cote client sont indicatifs).
availableForCatalogue expose category_name et trie par categorie ; la borne
regroupe deja par categorie (ordre intra-categorie preserve) donc son rendu ne
bouge pas. Tests : JS 104, PHP unit 398, PHPStan L6.
2026-06-24 09:59:18 +00:00

65 lines
1.9 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Tests\Unit\Auth;
use PHPUnit\Framework\TestCase;
use App\Auth\UserDirectory;
use App\Tests\Support\FakeDatabase;
/**
* Lecture des infos d'affichage (nom + libelle de role) pour l'entete admin.
*/
final class UserDirectoryTest extends TestCase
{
private FakeDatabase $db;
protected function setUp(): void
{
$this->db = new FakeDatabase();
}
public function testDisplayInfoReturnsNameAndRoleLabel(): void
{
$this->db->userDisplayRow = [
'first_name' => 'Corentin',
'last_name' => 'J',
'email' => 'corentin@wakdo.local',
'role_label' => 'Administrateur',
'order_source' => null,
];
self::assertSame(
['name' => 'Corentin J', 'role_label' => 'Administrateur', 'email' => 'corentin@wakdo.local', 'order_source' => ''],
(new UserDirectory($this->db))->displayInfo(7),
);
}
public function testDisplayInfoExposesOrderSourceForChannelRoles(): void
{
// order_source remonte du role : sert au layout a router "Saisie commande".
$this->db->userDisplayRow = [
'first_name' => 'Dana',
'last_name' => 'D',
'email' => 'dana@wakdo.local',
'role_label' => 'Drive Staff',
'order_source' => 'drive',
];
self::assertSame(
['name' => 'Dana D', 'role_label' => 'Drive Staff', 'email' => 'dana@wakdo.local', 'order_source' => 'drive'],
(new UserDirectory($this->db))->displayInfo(8),
);
}
public function testDisplayInfoDefaultsWhenAbsent(): void
{
$this->db->userDisplayRow = null;
self::assertSame(
['name' => 'Utilisateur', 'role_label' => '', 'email' => '', 'order_source' => ''],
(new UserDirectory($this->db))->displayInfo(999),
);
}
}