FunctionCallsFormulaLoaderTest.php 2.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /*
  3. * This file is part of the Assetic package, an OpenSky project.
  4. *
  5. * (c) 2010-2012 OpenSky Project Inc
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Assetic\Test\Factory\Loader;
  11. use Assetic\Factory\AssetFactory;
  12. use Assetic\Factory\Loader\FunctionCallsFormulaLoader;
  13. use Assetic\Factory\Resource\FileResource;
  14. class FunctionCallsFormulaLoaderTest extends \PHPUnit_Framework_TestCase
  15. {
  16. /**
  17. * @dataProvider getJavascriptInputs
  18. */
  19. public function testInput($function, $inputs, $name, $expected)
  20. {
  21. $resource = $this->getMock('Assetic\\Factory\\Resource\\ResourceInterface');
  22. $factory = $this->getMockBuilder('Assetic\\Factory\\AssetFactory')
  23. ->disableOriginalConstructor()
  24. ->getMock();
  25. $resource->expects($this->once())
  26. ->method('getContent')
  27. ->will($this->returnValue('<?php '.$function.'('.$inputs.') ?>'));
  28. $factory->expects($this->once())
  29. ->method('generateAssetName')
  30. ->will($this->returnValue($name));
  31. $loader = new FunctionCallsFormulaLoader($factory);
  32. $formulae = $loader->load($resource);
  33. $this->assertEquals($expected, $formulae);
  34. }
  35. public function getJavascriptInputs()
  36. {
  37. return array(
  38. array('assetic_javascripts', '"js/core.js"', 'asdf', array('asdf' => array(array('js/core.js'), array(), array('debug' => false, 'output' => 'js/*.js', 'name' => 'asdf', )))),
  39. array('assetic_javascripts', "'js/core.js'", 'asdf', array('asdf' => array(array('js/core.js'), array(), array('debug' => false, 'output' => 'js/*.js', 'name' => 'asdf', )))),
  40. array('assetic_javascripts', "array('js/core.js')", 'asdf', array('asdf' => array(array('js/core.js'), array(), array('debug' => false, 'output' => 'js/*.js', 'name' => 'asdf', )))),
  41. array('assetic_javascripts', 'array("js/core.js")', 'asdf', array('asdf' => array(array('js/core.js'), array(), array('debug' => false, 'output' => 'js/*.js', 'name' => 'asdf', )))),
  42. array('assetic_image', '"images/logo.gif"', 'asdf', array('asdf' => array(array('images/logo.gif'), array(), array('debug' => false, 'output' => 'images/*', 'name' => 'asdf')))),
  43. );
  44. }
  45. public function testComplexFormula()
  46. {
  47. $factory = new AssetFactory(__DIR__.'/templates', true);
  48. $loader = new FunctionCallsFormulaLoader($factory);
  49. $resource = new FileResource(__DIR__.'/templates/debug.php');
  50. $formulae = $loader->load($resource);
  51. $this->assertEquals(array(
  52. 'test123' => array(
  53. array('foo.css', 'bar.css'),
  54. array('?foo', 'bar'),
  55. array('name' => 'test123', 'output' => 'css/packed.css', 'debug' => true),
  56. ),
  57. ), $formulae);
  58. }
  59. }