/vendor/kriswallsmith/assetic/tests/Assetic/Test/AssetWriterTest.php
PHP | 207 lines | 164 code | 28 blank | 15 comment | 0 complexity | ee6341bfc6b33667276243a342db7899 MD5 | raw file
Possible License(s): BSD-3-Clause, BSD-2-Clause, Apache-2.0, LGPL-2.1, CC-BY-3.0, LGPL-3.0
- <?php
- /*
- * This file is part of the Assetic package, an OpenSky project.
- *
- * (c) 2010-2013 OpenSky Project Inc
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Assetic\Test;
- use Assetic\Asset\FileAsset;
- use Assetic\AssetManager;
- use Assetic\AssetWriter;
- class AssetWriterTest extends \PHPUnit_Framework_TestCase
- {
- protected function setUp()
- {
- $this->dir = sys_get_temp_dir().'/assetic_tests_'.rand(11111, 99999);
- mkdir($this->dir);
- $this->writer = new AssetWriter($this->dir, array(
- 'locale' => array('en', 'de', 'fr'),
- 'browser' => array('ie', 'firefox', 'other'),
- 'gzip' => array('gzip', '')
- ));
- }
- protected function tearDown()
- {
- array_map('unlink', glob($this->dir.'/*'));
- rmdir($this->dir);
- }
- public function testWriteManagerAssets()
- {
- $asset = $this->getMock('Assetic\\Asset\\AssetInterface');
- $am = $this->getMock('Assetic\\AssetManager');
- $am->expects($this->once())
- ->method('getNames')
- ->will($this->returnValue(array('foo')));
- $am->expects($this->once())
- ->method('get')
- ->with('foo')
- ->will($this->returnValue($asset));
- $asset->expects($this->atLeastOnce())
- ->method('getTargetPath')
- ->will($this->returnValue('target_url'));
- $asset->expects($this->once())
- ->method('dump')
- ->will($this->returnValue('content'));
- $asset->expects($this->atLeastOnce())
- ->method('getVars')
- ->will($this->returnValue(array()));
- $asset->expects($this->atLeastOnce())
- ->method('getValues')
- ->will($this->returnValue(array()));
- $this->writer->writeManagerAssets($am);
- $this->assertFileExists($this->dir.'/target_url');
- $this->assertEquals('content', file_get_contents($this->dir.'/target_url'));
- }
- public function testWriteAssetWithVars()
- {
- $asset = $this->getMock('Assetic\Asset\AssetInterface');
- $asset->expects($this->atLeastOnce())
- ->method('getVars')
- ->will($this->returnValue(array('locale')));
- $self = $this;
- $expectedValues = array(
- array('locale' => 'en'),
- array('locale' => 'de'),
- array('locale' => 'fr'),
- );
- $asset->expects($this->exactly(3))
- ->method('setValues')
- ->will($this->returnCallback(function($values) use ($self, $expectedValues) {
- static $counter = 0;
- $self->assertEquals($expectedValues[$counter++], $values);
- }));
- $asset->expects($this->exactly(3))
- ->method('getValues')
- ->will($this->returnCallback(function() use ($expectedValues) {
- static $counter = 0;
- return $expectedValues[$counter++];
- }));
- $asset->expects($this->exactly(3))
- ->method('dump')
- ->will($this->onConsecutiveCalls('en', 'de', 'fr'));
- $asset->expects($this->atLeastOnce())
- ->method('getTargetPath')
- ->will($this->returnValue('target.{locale}'));
- $this->writer->writeAsset($asset);
- $this->assertFileExists($this->dir.'/target.en');
- $this->assertFileExists($this->dir.'/target.de');
- $this->assertFileExists($this->dir.'/target.fr');
- $this->assertEquals('en', file_get_contents($this->dir.'/target.en'));
- $this->assertEquals('de', file_get_contents($this->dir.'/target.de'));
- $this->assertEquals('fr', file_get_contents($this->dir.'/target.fr'));
- }
- public function testAssetWithInputVars()
- {
- $asset = new FileAsset(__DIR__.'/Fixture/messages.{locale}.js',
- array(), null, null, array('locale'));
- $asset->setTargetPath('messages.{locale}.js');
- $this->writer->writeAsset($asset);
- $this->assertFileExists($this->dir.'/messages.en.js');
- $this->assertFileExists($this->dir.'/messages.de.js');
- $this->assertFileExists($this->dir.'/messages.fr.js');
- $this->assertEquals('var messages = {"text.greeting": "Hello %name%!"};',
- file_get_contents($this->dir.'/messages.en.js'));
- $this->assertEquals('var messages = {"text.greeting": "Hallo %name%!"};',
- file_get_contents($this->dir.'/messages.de.js'));
- $this->assertEquals('var messages = {"text.greet": "All\u00f4 %name%!"};',
- file_get_contents($this->dir.'/messages.fr.js'));
- }
- /**
- * @dataProvider getCombinationTests
- */
- public function testGetCombinations($vars, $expectedCombinations)
- {
- $ref = new \ReflectionMethod($this->writer, 'getCombinations');
- $ref->setAccessible(true);
- $this->assertEquals($expectedCombinations, $ref->invoke($this->writer, $vars));
- }
- public function getCombinationTests()
- {
- $tests = array();
- // no variables
- $tests[] = array(
- array(),
- array(array())
- );
- // one variables
- $tests[] = array(
- array('locale'),
- array(
- array('locale' => 'en'),
- array('locale' => 'de'),
- array('locale' => 'fr'),
- )
- );
- // two variables
- $tests[] = array(
- array('locale', 'browser'),
- array(
- array('locale' => 'en', 'browser' => 'ie'),
- array('locale' => 'de', 'browser' => 'ie'),
- array('locale' => 'fr', 'browser' => 'ie'),
- array('locale' => 'en', 'browser' => 'firefox'),
- array('locale' => 'de', 'browser' => 'firefox'),
- array('locale' => 'fr', 'browser' => 'firefox'),
- array('locale' => 'en', 'browser' => 'other'),
- array('locale' => 'de', 'browser' => 'other'),
- array('locale' => 'fr', 'browser' => 'other'),
- )
- );
- // three variables
- $tests[] = array(
- array('locale', 'browser', 'gzip'),
- array(
- array('locale' => 'en', 'browser' => 'ie', 'gzip' => 'gzip'),
- array('locale' => 'de', 'browser' => 'ie', 'gzip' => 'gzip'),
- array('locale' => 'fr', 'browser' => 'ie', 'gzip' => 'gzip'),
- array('locale' => 'en', 'browser' => 'firefox', 'gzip' => 'gzip'),
- array('locale' => 'de', 'browser' => 'firefox', 'gzip' => 'gzip'),
- array('locale' => 'fr', 'browser' => 'firefox', 'gzip' => 'gzip'),
- array('locale' => 'en', 'browser' => 'other', 'gzip' => 'gzip'),
- array('locale' => 'de', 'browser' => 'other', 'gzip' => 'gzip'),
- array('locale' => 'fr', 'browser' => 'other', 'gzip' => 'gzip'),
- array('locale' => 'en', 'browser' => 'ie', 'gzip' => ''),
- array('locale' => 'de', 'browser' => 'ie', 'gzip' => ''),
- array('locale' => 'fr', 'browser' => 'ie', 'gzip' => ''),
- array('locale' => 'en', 'browser' => 'firefox', 'gzip' => ''),
- array('locale' => 'de', 'browser' => 'firefox', 'gzip' => ''),
- array('locale' => 'fr', 'browser' => 'firefox', 'gzip' => ''),
- array('locale' => 'en', 'browser' => 'other', 'gzip' => ''),
- array('locale' => 'de', 'browser' => 'other', 'gzip' => ''),
- array('locale' => 'fr', 'browser' => 'other', 'gzip' => ''),
- )
- );
- return $tests;
- }
- }