mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-06 10:11:38 +09:00
Add unit tests for path conversion utilities in Template class
This commit is contained in:
parent
325c2c2b13
commit
ca5c96d02a
2 changed files with 62 additions and 2 deletions
|
|
@ -450,11 +450,17 @@ class Template
|
|||
* Convert a relative path using the given basepath.
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $basepath
|
||||
* @param ?string $basepath
|
||||
* @return string
|
||||
*/
|
||||
public function convertPath(string $path, string $basepath): string
|
||||
public function convertPath(string $path, ?string $basepath = null): string
|
||||
{
|
||||
// If basepath is not provided, use the relative dir of the current instance.
|
||||
if ($basepath === null)
|
||||
{
|
||||
$basepath = $this->relative_dirname;
|
||||
}
|
||||
|
||||
// Path relative to the Rhymix installation directory?
|
||||
if (preg_match('#^\^/?(\w.+)$#s', $path, $match))
|
||||
{
|
||||
|
|
|
|||
54
tests/unit/framework/TemplateTest.php
Normal file
54
tests/unit/framework/TemplateTest.php
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
|
||||
class TemplateTest extends \Codeception\Test\Unit
|
||||
{
|
||||
public function _before()
|
||||
{
|
||||
Context::init();
|
||||
}
|
||||
|
||||
public function testIsRelativePath()
|
||||
{
|
||||
$tmpl = new \Rhymix\Framework\Template('./tests/_data/template', 'empty.html');
|
||||
|
||||
$this->assertTrue($tmpl->isRelativePath('foo.html'));
|
||||
$this->assertTrue($tmpl->isRelativePath('foo/bar.html'));
|
||||
$this->assertTrue($tmpl->isRelativePath('../foo/bar.html'));
|
||||
$this->assertTrue($tmpl->isRelativePath('foo/../bar.html'));
|
||||
$this->assertTrue($tmpl->isRelativePath('^/foo/../bar.html'));
|
||||
$this->assertFalse($tmpl->isRelativePath('/foo/bar.html'));
|
||||
$this->assertFalse($tmpl->isRelativePath('https://foo.com/bar.html'));
|
||||
$this->assertFalse($tmpl->isRelativePath('file:///C:/foo/bar.html'));
|
||||
$this->assertFalse($tmpl->isRelativePath('data:image/png;base64,AAAAAAAAAAA="'));
|
||||
$this->assertFalse($tmpl->isRelativePath('{$foo}'));
|
||||
}
|
||||
|
||||
public function testConvertPath()
|
||||
{
|
||||
$tmpl = new \Rhymix\Framework\Template('./tests/_data/template', 'empty.html');
|
||||
|
||||
$source = 'foo.html';
|
||||
$target = 'tests/_data/template/foo.html';
|
||||
$this->assertEquals($target, $tmpl->convertPath($source));
|
||||
|
||||
$source = 'foo/bar.js';
|
||||
$target = 'tests/_data/template/foo/bar.js';
|
||||
$this->assertEquals($target, $tmpl->convertPath($source));
|
||||
|
||||
$source = '../foo.scss';
|
||||
$target = 'tests/_data/foo.scss';
|
||||
$this->assertEquals($target, $tmpl->convertPath($source));
|
||||
|
||||
$source = '../../_output/foo/../bar.jpg';
|
||||
$target = 'tests/_output/bar.jpg';
|
||||
$this->assertEquals($target, $tmpl->convertPath($source));
|
||||
|
||||
$source = '/foo/bar.blade.php';
|
||||
$target = 'tests/_data/template/foo/bar.blade.php';
|
||||
$this->assertEquals($target, $tmpl->convertPath($source));
|
||||
|
||||
$source = '^/foo/bar.gif';
|
||||
$target = '/rhymix/foo/bar.gif';
|
||||
$this->assertEquals($target, $tmpl->convertPath($source));
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue