1<?php
2// This file is part of Moodle - http://moodle.org/
3//
4// Moodle is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// Moodle is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
17/**
18 * core_minify related tests.
19 *
20 * @package    core
21 * @category   phpunit
22 * @copyright  2013 Petr Skoda {@link http://skodak.org}
23 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 */
25
26defined('MOODLE_INTERNAL') || die();
27
28
29/**
30 * Class core_minify_testcase.
31 */
32class core_minify_testcase extends advanced_testcase {
33    public function test_css() {
34        $css = "
35body {
36background: #fff;
37margin: 0;
38padding: 0;
39color: #281f18;
40}";
41
42        $this->assertSame("body{background:#fff;margin:0;padding:0;color:#281f18}", core_minify::css($css));
43    }
44
45    public function test_css_files() {
46        global $CFG;
47
48        $testfile1 = "$CFG->tempdir/test1.css";
49        $testfile2 = "$CFG->tempdir/test2.css";
50        $testfile3 = "$CFG->tempdir/test3.css";
51
52        $css1 = "
53body {
54background: #fff;
55margin: 0;
56padding: 0;
57color: #281f18;
58}";
59
60        $css2 = "body{}";
61
62        file_put_contents($testfile1, $css1);
63        file_put_contents($testfile2, $css2);
64
65        $files = array($testfile1, $testfile2);
66
67        $this->assertSame("body{background:#fff;margin:0;padding:0;color:#281f18}\n", core_minify::css_files($files));
68
69
70        $files = array($testfile1, $testfile2, $testfile3);
71
72        $this->assertStringStartsWith("body{background:#fff;margin:0;padding:0;color:#281f18}\n\n\n\n/* Cannot read CSS file ",
73            @core_minify::css_files($files));
74
75        unlink($testfile1);
76        unlink($testfile2);
77    }
78
79    public function test_js() {
80        $js = "
81function hm()
82{
83}
84";
85
86        $this->assertSame("function hm(){}", core_minify::js($js));
87
88        $js = "function hm{}";
89        $result = core_minify::js($js);
90        $this->assertContains($js, $result);
91    }
92
93    public function test_js_files() {
94        global $CFG;
95
96        $testfile1 = "$CFG->tempdir/test1.js";
97        $testfile2 = "$CFG->tempdir/test2.js";
98        $testfile3 = "$CFG->tempdir/test3.js";
99
100        $js1 = "
101function hm()
102{
103}
104";
105
106        $js2 = "function oh(){}";
107
108        file_put_contents($testfile1, $js1);
109        file_put_contents($testfile2, $js2);
110
111        $files = array($testfile1, $testfile2);
112
113        $this->assertSame("function hm(){};\nfunction oh(){}", core_minify::js_files($files));
114
115        $files = array($testfile1, $testfile2, $testfile3);
116
117        $this->assertStringStartsWith("function hm(){};\nfunction oh(){};\n\n\n// Cannot read JS file ",
118            @core_minify::js_files($files));
119
120        unlink($testfile1);
121        unlink($testfile2);
122    }
123}
124