public function testImport() { $manager = new Manager(); $manager->define('test', function () { $this->import('default', 'embedded'); $this->style('/foo.css'); }); $manager->define('default', function () { $this->style('/default.css'); $this->script('/default.js'); }); $manager->define('embedded', function () { $this->embeddedScript('var default = true;'); $this->embeddedStyle('default { }'); }); $assets = $manager->getCollection('test')->getAssets(); $this->assertEquals(2, count($assets['style'])); $this->assertEquals(1, count($assets['script'])); $this->assertEquals(1, count($assets['embeddedStyle'])); $this->assertEquals(1, count($assets['embeddedScript'])); $expectedAssets = ['style' => ['/default.css', '/foo.css'], 'script' => ['/default.js'], 'embeddedStyle' => ['default { }'], 'embeddedScript' => ['var default = true;']]; foreach ($expectedAssets as $type => $typeAssets) { for ($c = 0; $c < count($assets); $c++) { $actualAsset = $assets[$type][$c]; switch (get_class($actualAsset)) { case 'SimpleAsset\\Style': case 'SimpleAsset\\Script': $this->assertEquals($typeAssets[$c], $actualAsset->getSrc()); break; case 'SimpleAsset\\EmbeddedScript': $this->assertEquals($typeAssets[$c], $actualAsset->getScript()); break; case 'SimpleAsset\\EmbeddedStyle': $this->assertEquals($typeAssets[$c], $actualAsset->getStyle()); break; } } } }
/** * @param null $collection * @param callable $definition * @return SimpleAsset\Manager|SimpleAsset\Collection */ function AssetManager($collection = null, Closure $definition = null) { static $instance; if (!$instance instanceof Manager) { $instance = new Manager(); } if ($collection) { if ($definition) { $instance->define($collection, $definition); } else { return $instance->getCollection($collection); } } return $instance; }
public function testSmashWithUrlRewriter() { $manager = new Manager(); $manager->setPublicRoot(__DIR__ . '/resources'); $manager->define('test', function () { $this->style('/lesstest.less'); }); $s = new Smasher($manager, __DIR__ . '/workdir', 1); $urlRewriter = new UrlRewriter('http://example.com'); $s->smash($urlRewriter); $this->assertTrue(file_exists(__DIR__ . '/workdir/test.css')); $content = file_get_contents(__DIR__ . '/workdir/test.css'); $this->assertTrue(strpos($content, 'http://example.com') !== false); @unlink(__DIR__ . '/workdir/test.css'); }
public function testUseCdnWithNonCdnAssets() { $manager = new Manager(); $manager->define('test', function () { $this->style('//foo.com/foo.css'); $this->embeddedStyle('foo'); $this->script('//foo.com/foo.js'); $this->embeddedScript('foo'); }); $manager->useCdn('http://example.com'); $manager->select('test'); $output = $manager->renderStyleAssets(); $expectedOutput = <<<EOT <link rel="stylesheet" type="text/css" href="//foo.com/foo.css" media="all"/> <link rel="stylesheet" type="text/css" href="http://example.com/test.css" media="all"/> <style type="text/css"> foo </style> EOT; $this->assertEquals($expectedOutput, $output); $output = $manager->renderScriptAssets(); $expectedOutput = <<<EOT <script type="text/javascript" src="//foo.com/foo.js"></script> <script type="text/javascript" src="http://example.com/test.js"></script> <script type="text/javascript"> foo </script> EOT; $this->assertEquals($expectedOutput, $output); }