/** * 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')); }