/**
  * test loadera zasobów
  */
 public function testResourcesLoader()
 {
     $manager = $this->doc->resources('javascript');
     $manager->setOnAdd("testAdd", function (JavaScriptResource $res) {
         $combine = new JavaScriptCombineFiles();
         $combine->setInputDir(__DIR__)->setOutputDir(__DIR__ . '/tmp/cache')->setOutputBaseUrl('/tmp/cache')->setOutputForceRefresh(true)->setOutputLifeTime(0)->setOutputStrategy('manual')->setCacheDb(CombineFilesCacheDB::openFile(__DIR__ . '/tmp/cache/html_js.db'));
         $res->setCombineObject($combine);
         $res->setUrlManager(new UrlManager());
     });
     $manager->chooseOnAdd("testAdd");
     $locator = new FileLocator(__DIR__ . '/tmp/config');
     $loader = new JavaScriptResourcesLoader($locator, array('baseurl' => '/tmp', 'combine' => true, 'resources' => $manager, 'cache_dir' => __DIR__ . '/tmp/cache', 'cache_refresh' => true));
     $loader->load('html_resources.yml', 'framework');
     $loader->load('html_resources.yml', 'core');
     $manager = $this->doc->resources('stylesheet');
     $manager->setOnAdd("styleTestAdd", function (StyleSheetResource $res) {
         $combine = new StyleSheetCombineFiles();
         $combine->setInputDir(__DIR__)->setOutputDir(__DIR__ . '/tmp/cache')->setOutputBaseUrl('/tmp/cache')->setOutputForceRefresh(true)->setOutputLifeTime(0)->setOutputStrategy('manual')->setCacheDb(CombineFilesCacheDB::openFile(__DIR__ . '/tmp/cache/html_less.db'))->setLessImportDirs(array(__DIR__ . '/tmp/cache/less'))->setLessVariables(array('foo' => 'bar'));
         $res->setCombineObject($combine);
         $res->setUrlManager(new UrlManager());
     });
     $manager->chooseOnAdd("styleTestAdd");
     $manager->setOnAdd("hoho", function (StyleSheetResource $res) {
     });
     $manager->chooseOnAdd("hoho");
     $manager->chooseOnAdd("styleTestAdd");
     //$manager->chooseOnAdd(null);
     $locator = new FileLocator(__DIR__ . '/tmp/config');
     $loader = new StyleSheetResourcesLoader($locator, array('baseurl' => '/tmp', 'combine' => true, 'resources' => $manager, 'cache_dir' => __DIR__ . '/tmp/cache', 'cache_refresh' => true));
     $loader->load('html_resources.yml', 'theme');
     //var_dump($this->doc->render());
     $dom = new DOMDocument();
     $dom->loadHTML($this->doc->render());
     $xpath = new DOMXPath($dom);
     $this->assertEquals('Sample Page', $xpath->query('head/title')->item(0)->nodeValue);
     $this->assertEquals('/tmp/cache/theme.css', $xpath->query('head/link[@rel="stylesheet"]')->item(0)->getAttribute('href'));
     $this->assertEquals('/tmp/cache/framework.js', $xpath->query('head/script')->item(0)->getAttribute('src'));
     $this->assertEquals('/tmp/cache/core.js', $xpath->query('head/script')->item(1)->getAttribute('src'));
     $this->assertEquals('lorem ipsum', $xpath->query('body/p')->item(0)->nodeValue);
     $this->assertEquals(1, $xpath->query('body/script')->length);
     $this->assertEquals(1, $xpath->query('head/meta[@name="geo.region"]')->length);
     $this->assertTrue(file_exists(__DIR__ . '/tmp/cache/html_js.db'));
     $this->assertTrue(file_exists(__DIR__ . '/tmp/cache/html_less.db'));
     $this->assertTrue(file_exists(__DIR__ . '/tmp/cache/core.js'));
     $this->assertTrue(file_exists(__DIR__ . '/tmp/cache/framework.js'));
     $this->assertTrue(file_exists(__DIR__ . '/tmp/cache/theme.css'));
 }
 public function testJavaScript()
 {
     $groups = new ResourceGroups();
     $groups->addGroup('foo');
     $groups->addGroup('bar');
     $res = new JavaScriptResourceManager($groups, function (JavaScriptResource $res) {
         $combine = new JavaScriptCombineFiles();
         $combine->setInputDir(__DIR__)->setOutputDir(__DIR__ . '/tmp/cache')->setOutputBaseUrl('/tmp/cache')->setOutputForceRefresh(true)->setOutputLifeTime(0)->setOutputStrategy('manual')->setCacheDb(CombineFilesCacheDB::openFile(__DIR__ . '/tmp/cache/js.db'));
         $url = new UrlManager();
         $res->setCombineObject($combine);
         $res->setUrlManager($url);
     });
     $this->assertSame($groups, $res->getGroups());
     $res->add(new JavaScriptResource('foo_and_bar', array('/tmp/js/foo.js', '/tmp/js/bar.js'), array('combine' => true)), 'foo');
     $res->add(new JavaScriptResource('bar_and_foo', array('/tmp/js/bar.js', '/tmp/js/foo.js'), array('combine' => true)), 'bar');
     $this->assertTrue(file_exists(__DIR__ . '/tmp/cache/js.db'));
     foreach ($res->resources() as $js) {
         foreach ($js->getUrl() as $url) {
             $this->assertTrue(file_exists(__DIR__ . $url));
         }
     }
     $this->assertNotEmpty($res->render('json'));
     $this->assertNotEmpty($res->render('html'));
 }