/**
  * Return Sitemap Service
  * @param  ServiceLocatorInterface $serviceLocator
  * @return Sitemap
  * @throws \RuntimeException
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $config = $serviceLocator->get('Config');
     $config = isset($config['prismic']['sitemaps']) ? $config['prismic']['sitemaps'] : array();
     $sitemap = new Sitemap();
     /**
      * Cache
      */
     if (isset($config['cache'])) {
         $sitemap->setCache($serviceLocator->get($config['cache']));
     }
     if (isset($config['cache_prefix'])) {
         $sitemap->setCachePrefix($config['cache_prefix']);
     }
     if (isset($config['exclude'])) {
         $sitemap->setExclusions($config['exclude']);
     }
     /**
      * API and Context
      */
     $sitemap->setPrismicApi($serviceLocator->get('Prismic\\Api'));
     $sitemap->setContext($serviceLocator->get('NetgluePrismic\\Context'));
     /**
      * Link Generation
      */
     $sitemap->setLinkResolver($serviceLocator->get('NetgluePrismic\\Mvc\\LinkResolver'));
     $sitemap->setLinkGenerator($serviceLocator->get('NetgluePrismic\\Mvc\\LinkGenerator'));
     /**
      * Sitemap Config
      */
     $mapConfig = isset($config['sitemaps']) ? $config['sitemaps'] : array();
     $sitemap->setConfig($mapConfig);
     return $sitemap;
 }
 /**
  * @depends testInstance
  */
 public function testContainersAreCached(Sitemap $service)
 {
     $service->setCache($this->cache);
     $service->resetContainers();
     $key = $service->getCacheKeyForContainerName('test');
     $this->assertFalse($this->cache->hasItem($key));
     $container = $service->getContainerByName('test');
     $this->assertTrue($this->cache->hasItem($key));
     $service->resetContainers();
     $cached = $this->cache->getItem($key);
     $container = $service->getContainerByName('test');
     $this->assertSame($container->toArray(), $cached->toArray());
 }