/** * 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; }
/** * testSetGet * * @return void */ public function testSetGet() { $entity = new RcmGoogleAnalytics(); $data = ['id' => 123, 'trackingId' => 'UA00000', 'verificationCode' => 'ggggg', 'siteId' => 321, 'host' => 'test.example.com']; $domain = new Domain(); $domain->setDomainName('test.example.com'); $data['site'] = new Site(); $data['site']->setSiteId(3211); $data['site']->setDomain($domain); $entity->setId($data['id']); $this->assertEquals($data['id'], $entity->getId()); $entity->setTrackingId($data['trackingId']); $this->assertEquals($data['trackingId'], $entity->getTrackingId()); $this->assertTrue($entity->hasTracking()); $entity->setVerificationCode($data['verificationCode']); $this->assertEquals($data['verificationCode'], $entity->getVerificationCode()); $this->assertTrue($entity->hasVerificationCode()); $this->assertNull($entity->getHost()); $siteNoDomain = new Site(); $siteNoDomain->setSiteId(3311); $entity->setSite($siteNoDomain); $this->assertNull($entity->getHost()); $entity->setSite($data['site']); $this->assertEquals($data['site'], $entity->getSite()); $this->assertEquals($data['site']->getSiteId(), $entity->getSiteId()); $this->assertEquals($data['site']->getDomain()->getDomainName(), $entity->getHost()); $array = $entity->toArray(); $this->assertTrue(is_array($array)); $this->assertEquals($data['host'], $array['host']); }
/** * 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); }