From 1bb7248e3ee51d3da3631d8f33688ac060e1edc0 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Mon, 22 Jun 2020 00:52:51 +0900 Subject: [PATCH] Add tests for Router::getURL() and Router::parseURL() --- .../framework/parsers/moduleactionparser.php | 2 +- common/framework/parsers/moduleinfoparser.php | 2 +- tests/unit/framework/RouterTest.php | 65 +++++++++++++++++++ 3 files changed, 67 insertions(+), 2 deletions(-) diff --git a/common/framework/parsers/moduleactionparser.php b/common/framework/parsers/moduleactionparser.php index b8e74a806..9b5260cfe 100644 --- a/common/framework/parsers/moduleactionparser.php +++ b/common/framework/parsers/moduleactionparser.php @@ -30,7 +30,7 @@ class ModuleActionParser public static function loadXML(string $filename) { // Load the XML file. - $xml = simplexml_load_file($filename); + $xml = simplexml_load_string(file_get_contents($filename)); if ($xml === false) { return false; diff --git a/common/framework/parsers/moduleinfoparser.php b/common/framework/parsers/moduleinfoparser.php index 76daf3af4..4b58745d1 100644 --- a/common/framework/parsers/moduleinfoparser.php +++ b/common/framework/parsers/moduleinfoparser.php @@ -16,7 +16,7 @@ class ModuleInfoParser public static function loadXML(string $filename) { // Load the XML file. - $xml = simplexml_load_file($filename); + $xml = simplexml_load_string(file_get_contents($filename)); if ($xml === false) { return false; diff --git a/tests/unit/framework/RouterTest.php b/tests/unit/framework/RouterTest.php index a0a9b5a9e..e5fb7f2ae 100644 --- a/tests/unit/framework/RouterTest.php +++ b/tests/unit/framework/RouterTest.php @@ -23,11 +23,76 @@ class RouterTest extends \Codeception\TestCase\Test public function testGetURL() { + $info = Rhymix\Framework\Parsers\ModuleActionParser::loadXML(\RX_BASEDIR . 'modules/board/conf/module.xml'); + $this->assertEquals('dispBoardContent', $info->default_index_act); + $this->assertFalse(isset($info->permission)); + $this->assertGreaterThan(0, count($info->route->GET)); + $this->assertGreaterThan(0, count($info->action->dispBoardContent->route)); + $args = array('mid' => 'board', 'document_srl' => 123); + $this->assertEquals('board/123', Rhymix\Framework\Router::getURL($args, 2)); + $this->assertEquals('board/123', Rhymix\Framework\Router::getURL($args, 1)); + $this->assertEquals('index.php?mid=board&document_srl=123', Rhymix\Framework\Router::getURL($args, 0)); + + $args = array('mid' => 'board', 'act' => 'dispBoardWrite', 'document_srl' => 123); + $this->assertEquals('board/123/edit', Rhymix\Framework\Router::getURL($args, 2)); + $this->assertEquals('index.php?mid=board&act=dispBoardWrite&document_srl=123', Rhymix\Framework\Router::getURL($args, 1)); + $this->assertEquals('index.php?mid=board&act=dispBoardWrite&document_srl=123', Rhymix\Framework\Router::getURL($args, 0)); + + $args = array('mid' => 'board', 'act' => 'dispBoardWrite'); + $this->assertEquals('board/write', Rhymix\Framework\Router::getURL($args, 2)); + $this->assertEquals('index.php?mid=board&act=dispBoardWrite', Rhymix\Framework\Router::getURL($args, 1)); + $this->assertEquals('index.php?mid=board&act=dispBoardWrite', Rhymix\Framework\Router::getURL($args, 0)); + + $args = array('mid' => 'board', 'act' => 'dispBoardModifyComment', 'document_srl' => 123, 'comment_srl' => 456, 'extra_param' => 'foo bar'); + $this->assertEquals('board/comment/456/edit?extra_param=foo+bar', Rhymix\Framework\Router::getURL($args, 2)); + $this->assertEquals('index.php?mid=board&act=dispBoardModifyComment&document_srl=123&comment_srl=456&extra_param=foo+bar', Rhymix\Framework\Router::getURL($args, 1)); + $this->assertEquals('index.php?mid=board&act=dispBoardModifyComment&document_srl=123&comment_srl=456&extra_param=foo+bar', Rhymix\Framework\Router::getURL($args, 0)); + + $args = array('mid' => 'board', 'act' => 'dispMemberInfo'); + $this->assertEquals('board/member_info', Rhymix\Framework\Router::getURL($args, 2)); + $this->assertEquals('index.php?mid=board&act=dispMemberInfo', Rhymix\Framework\Router::getURL($args, 1)); + $this->assertEquals('index.php?mid=board&act=dispMemberInfo', Rhymix\Framework\Router::getURL($args, 0)); + + $args = array('module' => 'document', 'act' => 'procDocumentVoteUp'); + $this->assertEquals('document/procDocumentVoteUp', Rhymix\Framework\Router::getURL($args, 2)); + $this->assertEquals('index.php?module=document&act=procDocumentVoteUp', Rhymix\Framework\Router::getURL($args, 1)); + $this->assertEquals('index.php?module=document&act=procDocumentVoteUp', Rhymix\Framework\Router::getURL($args, 0)); } public function testParseURL() { + $args = array('mid' => 'board', 'act' => 'dispBoardContent', 'document_srl' => '123'); + $this->assertEquals($args, Rhymix\Framework\Router::parseURL('GET', 'board/123', 2)->args); + $this->assertEquals('board/123', Rhymix\Framework\Router::parseURL('GET', 'board/123', 2)->url); + $this->assertEquals('board', Rhymix\Framework\Router::parseURL('GET', 'board/123', 2)->mid); + $this->assertEquals('dispBoardContent', Rhymix\Framework\Router::parseURL('GET', 'board/123', 2)->act); + $args = array('mid' => 'board', 'document_srl' => '123'); + $this->assertEquals($args, Rhymix\Framework\Router::parseURL('GET', 'board/123', 1)->args); + $this->assertEquals($args, Rhymix\Framework\Router::parseURL('GET', 'index.php?mid=board&document_srl=123', 0)->args); + $this->assertEquals($args, Rhymix\Framework\Router::parseURL('GET', \RX_BASEURL . 'board/123', 1)->args); + $this->assertEquals($args, Rhymix\Framework\Router::parseURL('GET', \RX_BASEURL . 'index.php?mid=board&document_srl=123', 0)->args); + + $args = array('mid' => 'board', 'act' => 'dispBoardModifyComment', 'comment_srl' => '456', 'extra_param' => 'foo bar'); + $this->assertEquals($args, Rhymix\Framework\Router::parseURL('GET', 'board/comment/456/edit?extra_param=foo+bar', 2)->args); + $this->assertEquals('board', Rhymix\Framework\Router::parseURL('GET', 'board/comment/456/edit?extra_param=foo+bar', 2)->mid); + $this->assertEquals('dispBoardModifyComment', Rhymix\Framework\Router::parseURL('GET', 'board/comment/456/edit?extra_param=foo+bar', 2)->act); + $this->assertEquals('', Rhymix\Framework\Router::parseURL('GET', 'board/comment/456/edit?extra_param=foo+bar', 2)->document_srl); + $this->assertEquals($args, Rhymix\Framework\Router::parseURL('GET', 'index.php?mid=board&act=dispBoardModifyComment&comment_srl=456&extra_param=foo+bar', 1)->args); + $this->assertEquals($args, Rhymix\Framework\Router::parseURL('GET', 'index.php?mid=board&act=dispBoardModifyComment&comment_srl=456&extra_param=foo+bar', 0)->args); + + $args = array('mid' => 'board', 'act' => 'dispMemberInfo'); + $this->assertEquals($args, Rhymix\Framework\Router::parseURL('GET', 'board/member_info', 2)->args); + $this->assertEquals('board', Rhymix\Framework\Router::parseURL('GET', 'board/member_info', 2)->mid); + + $args = array('mid' => 'board', 'act' => 'dispMemberLoginForm'); + $this->assertEquals($args, Rhymix\Framework\Router::parseURL('GET', 'board/login', 2)->args); + $this->assertEquals('member', Rhymix\Framework\Router::parseURL('GET', 'board/login', 2)->module); + + $args = array('mid' => 'board', 'act' => 'procMemberLogin'); + $this->assertEquals($args, Rhymix\Framework\Router::parseURL('POST', 'board/login', 2)->args); + $this->assertEquals('member', Rhymix\Framework\Router::parseURL('POST', 'board/login', 2)->module); + } }