/** * getMockEntityManger * * @param $testCase * * @return \PHPUnit_Framework_MockObject_MockObject */ public function getMockEntityManger($testCase) { $result = null; if (!empty($testCase['entity'])) { $result = new RcmGoogleAnalyticsEntity(); $result->populate($testCase['entity']); } $repo = $this->getMockBuilder('\\Doctrine\\ORM\\EntityRepository')->disableOriginalConstructor()->getMock(); $repo->expects($this->any())->method('findOneBy')->will($this->returnValue($result)); $service = $this->getMockBuilder('\\Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock(); $service->expects($this->any())->method('getRepository')->will($this->returnValue($repo)); return $service; }
/** * Create a new resource * * @param mixed $data * * @return mixed */ public function create($data) { if (!$this->hasAccess()) { $this->response->setStatusCode(401); return new ApiJsonModel(null, 401, $this->translate('Access Denied')); } $service = $this->getRcmGoogleAnalyticsService(); $currentSite = $this->getCurrentSite(); $entity = $service->getSiteAnalyticEntity($currentSite); if (!empty($entity)) { $this->response->setStatusCode(400); return new ApiJsonModel($entity, 400, $this->translate('Analytics already exist for this site')); } // INPUT VALIDATE $inputFilter = new RcmGoogleAnalyticsFilter(); $inputFilter->setData($data); if (!$inputFilter->isValid()) { $this->response->setStatusCode(400); return new ApiJsonModel($data, 400, $this->translate('Analytics data is not valid'), $inputFilter->getMessages()); } $entity = new RcmGoogleAnalytics(); $entity->populate($inputFilter->getValues(), ['id', 'site']); $entity->setSite($this->getCurrentSite()); $entityManager = $this->getEntityManager(); try { $entityManager->persist($entity); $entityManager->flush($entity); } catch (\Exception $exception) { $this->response->setStatusCode(400); return new ApiJsonModel($entity, 400, $this->translate('Analytics failed to save') . ': ' . $exception->getMessage()); } return new ApiJsonModel($entity); }