*
* 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 {
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 = '
';
$this->assertEquals($expected, Assets::img('logo.png'));
}
function test_img_should_respect_alt_attribute() {
$expected = '
';
$this->assertEquals($expected,
Assets::img('logo.png', ['alt' => 'logo']));
}
function test_img_should_respect_size_attribute() {
$expected = '
';
$this->assertEquals($expected,
Assets::img('logo.png', ['size' => '10@20']));
}
function test_img_should_respect_other_attributes() {
$expected = '
';
$this->assertEquals($expected,
Assets::img('logo.png', ['a' => '1', 'b' => 2]));
}
function test_script_should_return_script_tag() {
$expected = '' . "\n";
$this->assertEquals($expected, Assets::script('prototype'));
}
function test_script_should_return_multiple_script_tags() {
$expected = '' . "\n";
$expected .= '' . "\n";
$this->assertEquals($expected, Assets::script('prototype', 'scriptaculous'));
}
function test_script_should_respect_url_parameters() {
$expected = '' . "\n";
$this->assertEquals($expected, Assets::script('scriptaculous.js?load=effects,dragdrop'));
}
function test_stylesheet_should_return_link_tag() {
$expected = '' . "\n";
$this->assertEquals($expected, Assets::stylesheet('blue'));
}
function test_stylesheet_should_return_multiple_link_tags() {
$expected = '' . "\n";
$expected .= '' . "\n";
$expected .= '' . "\n";
$this->assertEquals($expected, Assets::stylesheet('blue', 'green', 'red'));
}
function test_stylesheet_should_respect_options() {
$expected = '' . "\n";
$expected .= '' . "\n";
$expected .= '' . "\n";
$this->assertEquals($expected, Assets::stylesheet('blue', 'green', 'red', ['media' => 'all']));
}
}