Example #1
0
 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;
             }
         }
     }
 }
Example #2
0
/**
 * @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;
}
Example #3
0
 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');
 }
Example #4
0
    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);
    }