/** * @test * @group small * @group dev * @group library */ public function test_getById_returnsMergedFormValues() { // ARRANGE $websiteId = 'WEBSITE-ID'; $websiteSettingsId = 'rz_shop'; $baseDirectory = $this->getBaseDirectory(); $source = $this->getWebsiteSettingsSource($websiteId, array(array($baseDirectory, $websiteSettingsId))); $expectedFormValues = (object) array('filesystem' => array('foo', 'bar'), 'doctrine' => array('bar', 'foo'), 'both_object' => (object) array('dao' => 'doctrine'), 'both_array' => array('dao' => 'doctrine'), 'both_string' => 'doctrine'); $filesystemData = new WebsiteSettingsData(); $filesystemData->setWebsiteId($websiteId); $filesystemData->setId($websiteSettingsId); $filesystemData->setFormValues((object) array('filesystem' => array('foo', 'bar'), 'both_object' => (object) array('dao' => 'filesystem'), 'both_array' => array('dao' => 'filesystem'), 'both_string' => 'filesystem')); $filesystemDaoMock = $this->getFilesystemDaoMock(); $filesystemDaoMock->expects($this->once())->method('getById')->with($this->equalTo($source), $this->equalTo($websiteSettingsId))->will($this->returnValue($filesystemData)); $doctrineData = new WebsiteSettingsData(); $doctrineData->setWebsiteId($websiteId); $doctrineData->setId($websiteSettingsId); $doctrineData->setFormValues((object) array('doctrine' => array('bar', 'foo'), 'both_object' => (object) array('dao' => 'doctrine'), 'both_array' => array('dao' => 'doctrine'), 'both_string' => 'doctrine')); $doctrineDaoMock = $this->getDoctrineDaoMock(); $doctrineDaoMock->expects($this->once())->method('exists')->with($this->equalTo($source), $this->equalTo($websiteSettingsId))->will($this->returnValue(true)); $doctrineDaoMock->expects($this->once())->method('getById')->with($this->equalTo($source), $this->equalTo($websiteSettingsId))->will($this->returnValue($doctrineData)); $dao = $this->getAllDao($filesystemDaoMock, $doctrineDaoMock); // ACT $actualWebsiteSettings = $dao->getById($source, $websiteSettingsId); // ASSERT $this->assertInstanceOf('\\Cms\\Data\\WebsiteSettings', $actualWebsiteSettings); $this->assertEquals($expectedFormValues, $actualWebsiteSettings->getFormValues()); }
/** * updates the given website settings * * @param string $websiteId * @param string $id * @param array $attributes * * @return DataWebsiteSettings */ public function update($websiteId, $id, array $attributes) { $source = $this->getSource($websiteId); $websiteSettings = new DataWebsiteSettings(); $websiteSettings->setWebsiteId($websiteId); $websiteSettings->setId($id); $this->setAttributesToDataWebsiteSettings($websiteSettings, $attributes); return $this->getDao()->update($source, $websiteSettings); }
/** * @param string $websiteId * @param array $websiteSettings * * @return ServiceBasedWebsiteInfoStorage */ protected function getServiceBasedWebsiteInfoStorage($websiteId, array $websiteSettings) { // Create website service mock $websiteServiceStub = $this->getMockBuilder('\\Cms\\Service\\Website')->disableOriginalConstructor()->getMock(); // Create website settings service mock $websiteSettingsServiceStub = $this->getMockBuilder('\\Cms\\Service\\WebsiteSettings')->disableOriginalConstructor()->getMock(); $websiteSettingsServiceStub->expects($this->any())->method('getById')->will($this->returnCallback(function ($wId, $sId) use($websiteId, $websiteSettings) { if ($wId != $websiteId || !is_string($sId) || !array_key_exists($sId, $websiteSettings)) { throw new \Exception(); } $data = new WebsiteSettingsData(); $data->setWebsiteId($wId); $data->setId($sId); $data->setFormValues($websiteSettings[$sId]); return $data; })); return new ServiceBasedWebsiteInfoStorage($websiteId, $websiteServiceStub, $websiteSettingsServiceStub); }