/** * Gets settings mapper * * @param ServiceLocatorInterface $serviceLocator * @return SettingsMapper */ public function createService(ServiceLocatorInterface $serviceLocator) { $options = $serviceLocator->get('HtSettingsModule\\Options\\ModuleOptions'); $settingsProvider = new SettingsProvider($options, $serviceLocator->get('HtSettingsModule_SettingsMapper'), $serviceLocator->get('HtSettingsModule\\Service\\NamespaceHydratorProvider')); if ($options->getCacheOptions()->isEnabled()) { $settingsProvider->setCacheManager($serviceLocator->get('HtSettingsModule\\Service\\CacheManager')); } return $settingsProvider; }
public function testGetSettingsFromRealSourceAndCreateCache() { $cacheOptions = new CacheOptions(); $cacheManager = new CacheManager($cacheOptions); $cacheOptions->setEnabled(true); $adapter = new \Zend\Cache\Storage\Adapter\Memory(); $cacheOptions->setAdapter($adapter); $options = new ModuleOptions(); $options->setCacheOptions($cacheOptions); $settingsMapper = $this->getMock('HtSettingsModule\\Mapper\\SettingsMapperInterface'); $namespaceHydratorProvider = $this->getMockBuilder('HtSettingsModule\\Service\\NamespaceHydratorProviderInerface')->disableOriginalConstructor()->getMock(); $settingsProvider = new SettingsProvider($options, $settingsMapper, $namespaceHydratorProvider); $namespaceOptions = new NamespaceOptions(['entity_class' => 'ArrayObject']); $namespaceHydratorProvider->expects($this->once())->method('getHydrator')->with('theme')->will($this->returnValue(new Hydrator\ArraySerializable())); $options->addNamespace($namespaceOptions, 'theme'); $settingsProvider->setCacheManager($cacheManager); $settingsMapper->expects($this->any())->method('findByNamespace')->will($this->returnValue([new Parameter('theme', 'color', 'red'), new Parameter('theme', 'font_size', 33)])); $settings = $settingsProvider->getSettings('theme'); $this->assertEquals('red', $settings['color']); $this->assertEquals(33, $settings['font_size']); $this->assertEquals($settings, $adapter->getItem('theme')); $settingsMapper->expects($this->any())->method('findByNamespace')->will($this->returnValue([])); $settings = $settingsProvider->getSettings('theme'); }