This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
lnkohana/system/tests/kohana/HTMLTest.php

405 lines
8.9 KiB
PHP
Raw Permalink Normal View History

2013-04-22 04:09:50 +00:00
<?php defined('SYSPATH') OR die('Kohana bootstrap needs to be included before tests run');
/**
* Tests HTML
*
* @group kohana
* @group kohana.core
* @group kohana.core.html
*
* @package Kohana
* @category Tests
* @author Kohana Team
* @author BRMatt <matthew@sigswitch.com>
* @copyright (c) 2008-2012 Kohana Team
* @license http://kohanaframework.org/license
*/
class Kohana_HTMLTest extends Unittest_TestCase
{
2016-05-01 10:50:24 +00:00
/**
* Sets up the environment
*/
// @codingStandardsIgnoreStart
public function setUp()
// @codingStandardsIgnoreEnd
{
parent::setUp();
Kohana::$config->load('url')->set('trusted_hosts', array('www\.kohanaframework\.org'));
}
2013-04-22 04:09:50 +00:00
/**
* Defaults for this test
* @var array
*/
// @codingStandardsIgnoreStart
protected $environmentDefault = array(
'Kohana::$base_url' => '/kohana/',
'Kohana::$index_file' => 'index.php',
'HTML::$strict' => TRUE,
'HTTP_HOST' => 'www.kohanaframework.org',
);
// @codingStandardsIgnoreStart
/**
* Provides test data for test_attributes()
*
* @return array
*/
public function provider_attributes()
{
return array(
array(
array('name' => 'field', 'random' => 'not_quite', 'id' => 'unique_field'),
array(),
' id="unique_field" name="field" random="not_quite"'
),
array(
array('invalid' => NULL),
array(),
''
),
array(
array(),
array(),
''
),
array(
array('name' => 'field', 'checked'),
array(),
' name="field" checked="checked"',
),
array(
array('id' => 'disabled_field', 'disabled'),
array('HTML::$strict' => FALSE),
' id="disabled_field" disabled',
),
);
}
/**
* Tests HTML::attributes()
*
* @test
* @dataProvider provider_attributes
* @param array $attributes Attributes to use
* @param array $options Environment options to use
* @param string $expected Expected output
*/
public function test_attributes(array $attributes, array $options, $expected)
{
$this->setEnvironment($options);
$this->assertSame(
$expected,
HTML::attributes($attributes)
);
}
/**
* Provides test data for test_script
*
* @return array Array of test data
*/
public function provider_script()
{
return array(
array(
'<script type="text/javascript" src="http://google.com/script.js"></script>',
'http://google.com/script.js',
),
array(
'<script type="text/javascript" src="http://www.kohanaframework.org/kohana/index.php/my/script.js"></script>',
'my/script.js',
NULL,
'http',
TRUE
),
array(
'<script type="text/javascript" src="https://www.kohanaframework.org/kohana/my/script.js"></script>',
'my/script.js',
NULL,
'https',
FALSE
),
array(
'<script type="text/javascript" src="https://www.kohanaframework.org/kohana/my/script.js"></script>',
'/my/script.js', // Test absolute paths
NULL,
'https',
FALSE
),
2016-05-01 10:50:24 +00:00
array(
'<script type="text/javascript" src="//google.com/script.js"></script>',
'//google.com/script.js',
),
2013-04-22 04:09:50 +00:00
);
}
/**
* Tests HTML::script()
*
* @test
* @dataProvider provider_script
* @param string $expected Expected output
* @param string $file URL to script
* @param array $attributes HTML attributes for the anchor
* @param string $protocol Protocol to use
* @param bool $index Should the index file be included in url?
*/
public function test_script($expected, $file, array $attributes = NULL, $protocol = NULL, $index = FALSE)
{
$this->assertSame(
$expected,
HTML::script($file, $attributes, $protocol, $index)
);
}
/**
* Data provider for the style test
*
* @return array Array of test data
*/
public function provider_style()
{
return array(
array(
'<link type="text/css" href="http://google.com/style.css" rel="stylesheet" />',
'http://google.com/style.css',
array(),
NULL,
FALSE
),
array(
'<link type="text/css" href="/kohana/my/style.css" rel="stylesheet" />',
'my/style.css',
array(),
NULL,
FALSE
),
array(
'<link type="text/css" href="https://www.kohanaframework.org/kohana/my/style.css" rel="stylesheet" />',
'my/style.css',
array(),
'https',
FALSE
),
array(
'<link type="text/css" href="https://www.kohanaframework.org/kohana/index.php/my/style.css" rel="stylesheet" />',
'my/style.css',
array(),
'https',
TRUE
),
array(
'<link type="text/css" href="https://www.kohanaframework.org/kohana/index.php/my/style.css" rel="stylesheet" />',
'/my/style.css',
array(),
'https',
TRUE
),
array(
// #4283: http://dev.kohanaframework.org/issues/4283
'<link type="text/css" href="https://www.kohanaframework.org/kohana/index.php/my/style.css" rel="stylesheet/less" />',
'my/style.css',
array(
'rel' => 'stylesheet/less'
),
'https',
TRUE
),
2016-05-01 10:50:24 +00:00
array(
'<link type="text/css" href="//google.com/style.css" rel="stylesheet" />',
'//google.com/style.css',
array(),
NULL,
FALSE
),
2013-04-22 04:09:50 +00:00
);
}
/**
* Tests HTML::style()
*
* @test
* @dataProvider provider_style
* @param string $expected The expected output
* @param string $file The file to link to
* @param array $attributes Any extra attributes for the link
* @param string $protocol Protocol to use
* @param bool $index Whether the index file should be added to the link
*/
public function test_style($expected, $file, array $attributes = NULL, $protocol = NULL, $index = FALSE)
{
$this->assertSame(
$expected,
HTML::style($file, $attributes, $protocol, $index)
);
}
/**
* Provides test data for test_anchor
*
* @return array Test data
*/
public function provider_anchor()
{
return array(
2016-05-01 10:50:24 +00:00
// a fragment-only anchor
array(
'<a href="#go-to-section-kohana">Kohana</a>',
array(),
'#go-to-section-kohana',
'Kohana',
),
// a query-only anchor
array(
'<a href="?cat=a">Category A</a>',
array(),
'?cat=a',
'Category A',
),
2013-04-22 04:09:50 +00:00
array(
'<a href="http://kohanaframework.org">Kohana</a>',
array(),
'http://kohanaframework.org',
'Kohana',
),
array(
'<a href="http://google.com" target="_blank">GOOGLE</a>',
array(),
'http://google.com',
'GOOGLE',
array('target' => '_blank'),
'http',
),
array(
'<a href="https://www.kohanaframework.org/kohana/users/example">Kohana</a>',
array(),
'users/example',
'Kohana',
NULL,
'https',
FALSE,
),
array(
'<a href="https://www.kohanaframework.org/kohana/index.php/users/example">Kohana</a>',
array(),
'users/example',
'Kohana',
NULL,
'https',
TRUE,
),
array(
'<a href="https://www.kohanaframework.org/kohana/index.php/users/example">Kohana</a>',
array(),
'users/example',
'Kohana',
NULL,
'https',
),
array(
'<a href="https://www.kohanaframework.org/kohana/index.php/users/example">Kohana</a>',
array(),
'users/example',
'Kohana',
NULL,
'https',
TRUE,
),
array(
'<a href="https://www.kohanaframework.org/kohana/users/example">Kohana</a>',
array(),
'users/example',
'Kohana',
NULL,
'https',
FALSE,
),
array(
'<a href="https://www.kohanaframework.org/kohana/users/example">Kohana</a>',
array(),
'/users/example',
'Kohana',
NULL,
'https',
FALSE,
),
);
}
/**
* Tests HTML::anchor
*
* @test
* @dataProvider provider_anchor
*/
public function test_anchor($expected, array $options, $uri, $title = NULL, array $attributes = NULL, $protocol = NULL, $index = TRUE)
{
// $this->setEnvironment($options);
$this->assertSame(
$expected,
HTML::anchor($uri, $title, $attributes, $protocol, $index)
);
}
/**
* Data provider for test_file_anchor
*
* @return array
*/
public function provider_file_anchor()
{
return array(
array(
'<a href="/kohana/mypic.png">My picture file</a>',
array(),
'mypic.png',
'My picture file',
),
array(
'<a href="https://www.kohanaframework.org/kohana/index.php/mypic.png" attr="value">My picture file</a>',
array('attr' => 'value'),
'mypic.png',
'My picture file',
'https',
TRUE
),
array(
'<a href="ftp://www.kohanaframework.org/kohana/mypic.png">My picture file</a>',
array(),
'mypic.png',
'My picture file',
'ftp',
FALSE
),
array(
'<a href="ftp://www.kohanaframework.org/kohana/mypic.png">My picture file</a>',
array(),
'/mypic.png',
'My picture file',
'ftp',
FALSE
),
);
}
/**
* Test for HTML::file_anchor()
*
* @test
* @covers HTML::file_anchor
* @dataProvider provider_file_anchor
*/
public function test_file_anchor($expected, array $attributes, $file, $title = NULL, $protocol = NULL, $index = FALSE)
{
$this->assertSame(
$expected,
HTML::file_anchor($file, $title, $attributes, $protocol, $index)
);
}
}