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>
57 lines
1.7 KiB
PHP
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);
|
|
}
|
|
}
|