ConsoleControllerTest::setUpBeforeClass()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace AssetManagerTest\Controller;
4
5
use AssetManager\Controller\ConsoleController;
6
use AssetManager\Core\Resolver\MapResolver;
7
use AssetManager\Core\Service\AssetCacheManager;
8
use AssetManager\Core\Service\AssetFilterManager;
9
use AssetManager\Core\Service\AssetManager;
10
use AssetManager\Core\Service\MimeResolver;
11
use JSMin;
12
use PHPUnit_Framework_TestCase;
13
use Zend\Console\Adapter\AdapterInterface;
14
use Zend\Console\Request as ConsoleRequest;
15
use Zend\Mvc\Console\Router\RouteMatch;
16
use Zend\Mvc\MvcEvent;
17
use Zend\Mvc\Router\RouteMatch as V2RouteMatch;
18
use Zend\ServiceManager\ServiceLocatorInterface;
19
use Zend\View\Resolver\ResolverInterface;
20
21
class ConsoleControllerTest extends PHPUnit_Framework_TestCase
22
{
23
    /**
24
     *
25
     * @var ConsoleController
26
     */
27
    protected $controller;
28
    protected $request;
29
    protected $routeMatch;
30
    protected $event;
31
    protected static $assetName;
32
33
    public static function setUpBeforeClass()
34
    {
35
        self::$assetName = '_assettest.' . time();
36
    }
37
38
    public function setUp()
39
    {
40
        require_once __DIR__ . '/../../_files/JSMin.inc';
41
42
        $config = array(
43
            'filters' => array(
44
                self::$assetName => array(
45
                    array(
46
                        'filter' => 'JSMin',
47
                    ),
48
                ),
49
            ),
50
        );
51
52
        $assetFilterManager = new AssetFilterManager($config['filters']);
53
        $assetCacheManager = $this->getAssetCacheManager();
54
55
        $resolver     = $this->getResolver(__DIR__ . '/../../_files/require-jquery.js');
56
        $assetManager = new AssetManager($resolver, $config);
57
        $assetManager->setAssetFilterManager($assetFilterManager);
58
        $assetManager->setAssetCacheManager($assetCacheManager);
59
60
        $this->request = new ConsoleRequest();
61
        $this->routeMatch = $this->createRouteMatch(['controller' => 'console']);
62
63
        $this->event = new MvcEvent();
64
        $this->event->setRouteMatch($this->routeMatch);
65
66
        $this->controller = new ConsoleController(
67
            $this->createMock(AdapterInterface::class),
68
            $assetManager,
69
            array()
70
        );
71
        $this->controller->setEvent($this->event);
72
    }
73
74
    public function createRouteMatch(array $params = [])
75
    {
76
        $class = class_exists(V2RouteMatch::class) ? V2RouteMatch::class : RouteMatch::class;
77
        return new $class($params);
78
    }
79
80
    /**
81
     *
82
     * @return ResolverInterface
83
     */
84
    protected function getResolver()
85
    {
86
        $mimeResolver = new MimeResolver();
87
        $resolver = new MapResolver(array(
88
            self::$assetName => __DIR__ . '/../../_files/require-jquery.js'
89
        ));
90
        $resolver->setMimeResolver($mimeResolver);
91
        return $resolver;
92
    }
93
94
    /**
95
     * @return AssetCacheManager
96
     */
97
    protected function getAssetCacheManager()
98
    {
99
        $serviceLocator = $this->createMock(ServiceLocatorInterface::class);
100
        $config = array(
101
            self::$assetName => array(
102
                'cache' => 'FilePathCache',
103
                'options' => array(
104
                    'dir' => sys_get_temp_dir()
105
                )
106
            ),
107
        );
108
        $assetCacheManager = new AssetCacheManager($serviceLocator, $config);
109
        return $assetCacheManager;
110
    }
111
112
    public function testWarmupAction()
113
    {
114
        $this->routeMatch->setParam('action', 'warmup');
115
        $this->controller->dispatch($this->request);
116
117
        $dumpedAsset = sys_get_temp_dir() . '/' . self::$assetName;
118
        $this->assertEquals(
119
            file_get_contents($dumpedAsset),
120
            JSMin::minify(file_get_contents(__DIR__ . '/../../_files/require-jquery.js'))
121
        );
122
    }
123
}
124