Newer
Older
<?php
/*
* Copyright (C) 2007 - Marcus Lunzenauer <mlunzena@uos.de>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*/
define('STATIC_ASSETS_URL', 'http://www.example.com/public/');
define('DYNAMIC_ASSETS_URL', 'http://www%d.example.com/public/');
/**
* Testcase for Assets class.
*
* @package studip
* @subpackage test
*
* @author mlunzena
* @copyright (c) Authors
*/
class AssetsTestCase extends \Codeception\Test\Unit {
function setUp(): void {
Assets::set_assets_url(STATIC_ASSETS_URL);
}
function tearDown(): void {
Assets::set_assets_url('');
}
function test_class_should_exist() {
$this->assertTrue(class_exists('Assets'));
}
function test_url_should_return_ASSETS_URL() {
$this->assertEquals(STATIC_ASSETS_URL, Assets::url());
}
function test_url_should_concats_argument() {
$this->assertEquals(STATIC_ASSETS_URL . 'prototype.js',
Assets::url('prototype.js'));
}
}
class DynamicAssetsTestCase extends \Codeception\Test\Unit
{
function setUp(): void {
Assets::set_assets_url(DYNAMIC_ASSETS_URL);
}
function tearDown(): void {
Assets::set_assets_url('');
}
function test_url_without_arg_should_cycle() {
for ($i = 0; $i < Assets::NUMBER_OF_ALIASES + 1; ++$i)
$this->assertEquals(sprintf(DYNAMIC_ASSETS_URL,
$i % Assets::NUMBER_OF_ALIASES),
Assets::url());
}
function test_url_with_paramater_should_not_cycle() {
$url = Assets::url('prototype.js');
$url2 = Assets::url('prototype.js');
$pattern = sprintf('@http://www[0-%d].example.com/public/@',
Assets::NUMBER_OF_ALIASES - 1);
$this->assertRegexp($pattern, $url);
$this->assertEquals($url, $url2);
}
}
class AssetsHelpersTestCase extends \Codeception\Test\Unit
{
function setUp(): void {
Assets::set_assets_url(STATIC_ASSETS_URL);
}
function tearDown(): void {
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
Assets::set_assets_url('');
}
function test_image_path_should_add_directory_before_image() {
$expected = STATIC_ASSETS_URL.'images/logo.png';
$this->assertEquals($expected, Assets::image_path('logo.png'));
}
function test_image_path_should_add_png_if_no_extension_were_given() {
$expected = STATIC_ASSETS_URL.'images/logo.png';
$this->assertEquals($expected, Assets::image_path('logo'));
}
function test_image_path_should_not_touch_absolute_paths() {
$url = Assets::image_path('/some/logo.png');
$this->assertEquals(STATIC_ASSETS_URL.'some/logo.png', $url);
}
function test_javascript_path_should_add_directory_before_script() {
$expected = STATIC_ASSETS_URL.'javascripts/prototype.js';
$this->assertEquals($expected, Assets::javascript_path('prototype.js'));
}
function test_javascript_path_should_add_js_if_no_extension_were_given() {
$expected = STATIC_ASSETS_URL.'javascripts/prototype.js';
$this->assertEquals($expected, Assets::javascript_path('prototype'));
}
function test_javascript_path_should_not_touch_absolute_paths() {
$url = Assets::javascript_path('/some/script.js');
$this->assertEquals(STATIC_ASSETS_URL.'some/script.js', $url);
}
function test_stylesheet_path_should_add_directory_before_script() {
$expected = STATIC_ASSETS_URL.'stylesheets/print.css';
$this->assertEquals($expected, Assets::stylesheet_path('print.css'));
}
function test_stylesheet_path_should_add_css_if_no_extension_were_given() {
$expected = STATIC_ASSETS_URL.'stylesheets/print.css';
$this->assertEquals($expected, Assets::stylesheet_path('print'));
}
function test_stylesheet_path_should_not_touch_absolute_paths() {
$url = Assets::stylesheet_path('/some/style.css');
$this->assertEquals(STATIC_ASSETS_URL.'some/style.css', $url);
}
function test_img_should_return_img_tag_with_alt_attribute() {
$expected = '<img alt="Logo" src="'.STATIC_ASSETS_URL.'images/logo.png">';
$this->assertEquals($expected, Assets::img('logo.png'));
}
function test_img_should_respect_alt_attribute() {
$expected = '<img alt="logo" src="'.STATIC_ASSETS_URL.'images/logo.png">';
$this->assertEquals($expected,
Assets::img('logo.png', ['alt' => 'logo']));
}
function test_img_should_respect_size_attribute() {
$expected = '<img alt="Logo" height="20" src="'.STATIC_ASSETS_URL.'images/logo.png" width="10">';
$this->assertEquals($expected,
Assets::img('logo.png', ['size' => '10@20']));
}
function test_img_should_respect_other_attributes() {
$expected = '<img a="1" alt="Logo" b="2" src="'.STATIC_ASSETS_URL.'images/logo.png">';
$this->assertEquals($expected,
Assets::img('logo.png', ['a' => '1', 'b' => 2]));
}
function test_script_should_return_script_tag() {
$expected = '<script src="'.STATIC_ASSETS_URL.'javascripts/prototype.js"></script>' . "\n";
$this->assertEquals($expected, Assets::script('prototype'));
}
function test_script_should_return_multiple_script_tags() {
$expected = '<script src="'.STATIC_ASSETS_URL.'javascripts/prototype.js"></script>' . "\n";
$expected .= '<script src="'.STATIC_ASSETS_URL.'javascripts/scriptaculous.js"></script>' . "\n";
$this->assertEquals($expected, Assets::script('prototype', 'scriptaculous'));
}
function test_script_should_respect_url_parameters() {
$expected = '<script '.
'src="'.STATIC_ASSETS_URL.'javascripts/scriptaculous.js?load=effects,dragdrop">'.
'</script>' . "\n";
$this->assertEquals($expected, Assets::script('scriptaculous.js?load=effects,dragdrop'));
}
function test_stylesheet_should_return_link_tag() {
$expected = '<link href="'.STATIC_ASSETS_URL.'stylesheets/blue.css" media="screen" rel="stylesheet">' . "\n";
$this->assertEquals($expected, Assets::stylesheet('blue'));
}
function test_stylesheet_should_return_multiple_link_tags() {
$expected = '<link href="'.STATIC_ASSETS_URL.'stylesheets/blue.css" media="screen" rel="stylesheet">' . "\n";
$expected .= '<link href="'.STATIC_ASSETS_URL.'stylesheets/green.css" media="screen" rel="stylesheet">' . "\n";
$expected .= '<link href="'.STATIC_ASSETS_URL.'stylesheets/red.css" media="screen" rel="stylesheet">' . "\n";
$this->assertEquals($expected, Assets::stylesheet('blue', 'green', 'red'));
}
function test_stylesheet_should_respect_options() {
$expected = '<link href="'.STATIC_ASSETS_URL.'stylesheets/blue.css" media="all" rel="stylesheet">' . "\n";
$expected .= '<link href="'.STATIC_ASSETS_URL.'stylesheets/green.css" media="all" rel="stylesheet">' . "\n";
$expected .= '<link href="'.STATIC_ASSETS_URL.'stylesheets/red.css" media="all" rel="stylesheet">' . "\n";
$this->assertEquals($expected, Assets::stylesheet('blue', 'green', 'red', ['media' => 'all']));
}
}