Files
Inventory/tests/Api/Controller/CustomFieldNamesControllerTest.php
Matthieu 0255d7dda1 feat(search-select) : ajoute prop creatable pour autoriser la saisie libre
En mode creatable=true, le composant emit le texte tape en temps reel
et ne reset plus au blur. Une ligne 'Creer XYZ' apparait quand le texte
ne matche aucune option. Mode strict (defaut) inchange. Le composant
emit aussi 'focus' pour permettre au parent de charger les donnees au
premier focus.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 14:32:06 +02:00

57 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Tests\Api\Controller;
use App\Tests\AbstractApiTestCase;
/**
* @internal
*/
class CustomFieldNamesControllerTest extends AbstractApiTestCase
{
public function testReturns401WhenUnauthenticated(): void
{
$client = $this->createUnauthenticatedClient();
$client->request('GET', '/api/custom-fields/names');
$this->assertResponseStatusCodeSame(401);
}
public function testReturnsArrayForAuthenticatedViewer(): void
{
$client = $this->createViewerClient();
$client->request('GET', '/api/custom-fields/names');
$this->assertResponseIsSuccessful();
$data = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($data);
}
public function testReturnsDistinctSortedNames(): void
{
$machine1 = $this->createMachine('M1');
$this->createCustomField('Tension', 'text', $machine1);
$this->createCustomField('Numéro de série', 'text', $machine1);
$machine2 = $this->createMachine('M2');
$this->createCustomField('Tension', 'text', $machine2); // doublon
$client = $this->createViewerClient();
$client->request('GET', '/api/custom-fields/names');
$this->assertResponseIsSuccessful();
$data = json_decode($client->getResponse()->getContent(), true);
$this->assertContains('Tension', $data);
$this->assertContains('Numéro de série', $data);
// Pas de doublon
$this->assertSame(count(array_unique($data)), count($data));
// Tri alpha
$sorted = $data;
sort($sorted, SORT_STRING);
$this->assertSame($sorted, $data);
}
}