InternalPartNumberTest.php (2817B)
1 <?php 2 3 namespace PartKeepr\PartBundle\Tests; 4 5 use Doctrine\Common\DataFixtures\ProxyReferenceRepository; 6 use Dunglas\ApiBundle\Api\IriConverter; 7 use PartKeepr\CoreBundle\Tests\WebTestCase; 8 9 class InternalPartNumberTest extends WebTestCase 10 { 11 /** 12 * @var ProxyReferenceRepository 13 */ 14 protected $fixtures; 15 16 public function setUp() 17 { 18 $this->fixtures = $this->loadFixtures( 19 [ 20 'PartKeepr\StorageLocationBundle\DataFixtures\CategoryDataLoader', 21 'PartKeepr\StorageLocationBundle\DataFixtures\StorageLocationLoader', 22 'PartKeepr\PartBundle\DataFixtures\CategoryDataLoader', 23 'PartKeepr\PartBundle\DataFixtures\PartDataLoader', 24 'PartKeepr\ManufacturerBundle\Tests\DataFixtures\ManufacturerDataLoader', 25 'PartKeepr\DistributorBundle\Tests\DataFixtures\DistributorDataLoader', 26 ] 27 )->getReferenceRepository(); 28 } 29 30 public function testInternalPartNumberUniqueness() 31 { 32 $client = static::makeClient(true); 33 34 /** 35 * @var IriConverter 36 */ 37 $iriConverter = $this->getContainer()->get('api.iri_converter'); 38 39 $part = [ 40 "name" => "foobar", 41 "storageLocation" => $iriConverter->getIriFromItem($this->fixtures->getReference("storagelocation.first")), 42 "category" => $iriConverter->getIriFromItem($this->fixtures->getReference("partcategory.first")), 43 "partUnit" => $iriConverter->getIriFromItem($this->fixtures->getReference("partunit.default")), 44 "internalPartNumber" => "foo123", 45 ]; 46 47 $client->request( 48 'POST', 49 '/api/parts', 50 [], 51 [], 52 ['CONTENT_TYPE' => 'application/json'], 53 json_encode($part) 54 ); 55 $client->request( 56 'POST', 57 '/api/parts', 58 [], 59 [], 60 ['CONTENT_TYPE' => 'application/json'], 61 json_encode($part) 62 ); 63 64 $this->assertEquals(500, $client->getResponse()->getStatusCode()); 65 66 $response = json_decode($client->getResponse()->getContent()); 67 68 $this->assertObjectHasAttribute("@type", $response); 69 $this->assertObjectHasAttribute("@context", $response); 70 $this->assertObjectHasAttribute('hydra:title', $response); 71 $this->assertObjectHasAttribute('hydra:description', $response); 72 73 $this->assertEquals('/api/contexts/Error', $response->{'@context'}); 74 $this->assertEquals('Error', $response->{'@type'}); 75 $this->assertEquals('An error occurred', $response->{'hydra:title'}); 76 $this->assertEquals('The internal part number is already used', $response->{'hydra:description'}); 77 } 78 }