. */ declare(strict_types=1); namespace App\Tests\API\Endpoints; use App\Tests\API\Endpoints\CrudEndpointTestCase; final class PartLotsEndpointTest extends CrudEndpointTestCase { protected function getBasePath(): string { return '/api/part_lots'; } public function testGetCollection(): void { $this->_testGetCollection(); self::assertJsonContains([ 'hydra:totalItems' => 2, ]); } public function testGetItem(): void { $this->_testGetItem(1); $this->_testGetItem(2); } public function testFilterByUserBarcode(): void { $response = self::createAuthenticatedClient()->request('GET', '/api/part_lots?user_barcode=lot2_vendor_barcode'); self::assertResponseIsSuccessful(); self::assertJsonContains([ 'hydra:totalItems' => 1, ]); $json = $response->toArray(); self::assertSame('/api/part_lots/2', $json['hydra:member'][0]['@id']); } public function testFilterByUserBarcodeUsingWildcard(): void { $response = self::createAuthenticatedClient()->request('GET', '/api/part_lots?user_barcode=lot2_%'); self::assertResponseIsSuccessful(); self::assertJsonContains([ 'hydra:totalItems' => 1, ]); $json = $response->toArray(); self::assertSame('/api/part_lots/2', $json['hydra:member'][0]['@id']); } public function testCreateItem(): void { $this->_testPostItem([ 'name' => 'API test', 'part' => '/api/parts/1', 'storage_location' => '/api/storage_locations/1', 'amount' => 100, ]); } public function testUpdateItem(): void { $this->_testPatchItem(1, [ 'amount' => 220 ]); } public function testDeleteItem(): void { $this->_testDeleteItem(1); } }