public function testAddNew() { $model = new Items($this->getEntityManagerMock()); $item = new Item(); $item->setPrice(22)->setDescription('Description')->setName('name'); $apiResponse = new ApiResponse(); $model->saveItem($item, $apiResponse); $response = $apiResponse->getResponse(); $this->assertInstanceOf(JsonResponse::class, $response); $this->assertSame(Response::HTTP_CREATED, $response->getStatusCode()); }
/** * @param Item $item * @param ApiResponse $response * @return Item|null */ public function saveItem(Item $item, ApiResponse $response) { if (null === $item->getId()) { $item = $this->em->getRepository('RestApiBundle:Item')->add($item); $response->setStatusCode(Response::HTTP_CREATED); } else { $item = $this->em->getRepository('RestApiBundle:Item')->update($item); $response->setStatusCode(Response::HTTP_OK); } $response->setId($item->getId()); return $item; }
/** * @param string $rawItem * @param null $id * @return Item * @throws ApiTransformationException */ public function transform($rawItem, $id = null) { $item = new Item(); $item->setId($id); foreach (json_decode($rawItem) as $key => $value) { $setter = 'set' . ucfirst($key); if (!method_exists($item, $setter)) { throw new ApiTransformationException(); } $item->{$setter}($value); } return $item; }