diff --git a/test-phpUnit/SelectXmlTest_Mssql.php b/test-phpUnit/SelectXmlTest_Mssql.php new file mode 100644 index 000000000..227808c3c --- /dev/null +++ b/test-phpUnit/SelectXmlTest_Mssql.php @@ -0,0 +1,174 @@ +getNewParserOutputString($xml_file, '[', $argsString, 'mssql'); + //echo $outputString; + $output = eval($outputString); + + if(!is_a($output, 'Query')){ + if(!$output->toBool()) $querySql = "Date incorecte! Query-ul nu a putut fi executat."; + }else { + $db = &DB::getInstance('mssql'); + $querySql = $db->getSelectSql($output); + + // Remove whitespaces, tabs and all + $querySql = Helper::cleanQuery($querySql); + $expected = Helper::cleanQuery($expected); + } + + // Test + $this->assertEquals($expected, $querySql); + } + + function testSelectStar(){ + $xml_file = _XE_PATH_ . "modules/module/queries/getAdminId.xml"; + $argsString = '$args->module_srl = 10;'; + $expected = 'SELECT * FROM [xe_module_admins] as [module_admins] , [xe_member] as [member] WHERE [module_srl] = ? and [member].[member_srl] = [module_admins].[member_srl]'; + $this->_test($xml_file, $argsString, $expected); + } + + function testRquiredParameter(){ + $xml_file = _XE_PATH_ . "modules/module/queries/getAdminId.xml"; + $argsString = ''; + $expected = 'Date incorecte! Query-ul nu a putut fi executat.'; + $this->_test($xml_file, $argsString, $expected); + } + + function testWithoutCategoriesTag(){ + $xml_file = _XE_PATH_ . "modules/module/queries/getModuleCategories.xml"; + $argsString = ''; + $expected = 'SELECT * FROM [xe_module_categories] as [module_categories] ORDER BY [title] asc'; + $this->_test($xml_file, $argsString, $expected); + } + + function test_module_getDefaultModules(){ + $xml_file = _XE_PATH_ . "modules/module/queries/getDefaultModules.xml"; + $argsString = ''; + $expected = 'SELECT [modules].[site_srl] + , [modules].[module] + , [modules].[mid] + , [modules].[browser_title] + , [module_categories].[title] as [category] + , [modules].[module_srl] + FROM [xe_modules] as [modules] + left join [xe_module_categories] as [module_categories] + on [module_categories].[module_category_srl] = [modules].[module_category_srl] + WHERE [modules].[site_srl] = ? + ORDER BY [modules].[module] asc, [module_categories].[title] asc, [modules].[mid] asc'; + $this->_test($xml_file, $argsString, $expected); + } + + function test_module_getSiteInfo(){ + $xml_file = _XE_PATH_ . "modules/module/queries/getSiteInfo.xml"; + $argsString = '$args->site_srl = 0;'; + $expected = 'SELECT [modules].[site_srl] as [module_site_srl] + , [modules].[module_srl] as [module_srl] + , [modules].[module] as [module] + , [modules].[module_category_srl] as [module_category_srl] + , [modules].[layout_srl] as [layout_srl] + , [modules].[mlayout_srl] as [mlayout_srl] + , [modules].[use_mobile] as [use_mobile] + , [modules].[menu_srl] as [menu_srl] + , [modules].[mid] as [mid] + , [modules].[skin] as [skin] + , [modules].[mskin] as [mskin] + , [modules].[browser_title] as [browser_title] + , [modules].[description] as [description] + , [modules].[is_default] as [is_default] + , [modules].[content] as [content] + , [modules].[mcontent] as [mcontent] + , [modules].[open_rss] as [open_rss] + , [modules].[header_text] as [header_text] + , [modules].[footer_text] as [footer_text] + , [modules].[regdate] as [regdate] + , [sites].[site_srl] as [site_srl] + , [sites].[domain] as [domain] + , [sites].[index_module_srl] as [index_module_srl] + , [sites].[default_language] as [default_language] + FROM [xe_sites] as [sites] + left join [xe_modules] as [modules] on [modules].[module_srl] = [sites].[index_module_srl] + WHERE [sites].[site_srl] = ? '; + $this->_test($xml_file, $argsString, $expected); + } + + function test_addon_getAddonInfo(){ + $xml_file = _XE_PATH_ . "modules/addon/queries/getAddonInfo.xml"; + $argsString = '$args->addon = "captcha";'; + $expected = 'SELECT * + FROM [xe_addons] as [addons] + WHERE [addon] = ? '; + $this->_test($xml_file, $argsString, $expected); + } + + function test_addon_getAddons(){ + $xml_file = _XE_PATH_ . "modules/addon/queries/getAddons.xml"; + $argsString = ''; + $expected = 'SELECT * + FROM [xe_addons] as [addons] + ORDER BY [addon] asc'; + $this->_test($xml_file, $argsString, $expected); + } + + function test_admin_getCommentCount(){ + $xml_file = _XE_PATH_ . "modules/admin/queries/getCommentCount.xml"; + $argsString = ''; + $expected = 'SELECT count(*) as [count] + FROM [xe_comments] as [comments]'; + $this->_test($xml_file, $argsString, $expected); + } + + function test_admin_getCommentDeclaredStatus(){ + $xml_file = _XE_PATH_ . "modules/admin/queries/getCommentDeclaredStatus.xml"; + $argsString = '$args->date = "20110411";'; + $expected = 'SELECT TOP 2 substr([regdate],1,8) as [date], count(*) as [count] + FROM [xe_comment_declared_log] as [comment_declared_log] + WHERE [regdate] >= ? + GROUP BY substr([regdate],1,8) + ORDER BY substr([regdate],1,8) asc'; + $this->_test($xml_file, $argsString, $expected); + } + + function test_member_getAutoLogin(){ + $xml_file = _XE_PATH_ . "modules/member/queries/getAutoLogin.xml"; + $argsString = '$args->autologin_key = 10;'; + $expected = 'SELECT [member].[user_id] as [user_id] + , [member].[password] as [password] + , [member_autologin].[autologin_key] as [autologin_key] + FROM [xe_member] as [member] , [xe_member_autologin] as [member_autologin] + WHERE [member_autologin].[autologin_key] = ? + and [member].[member_srl] = [member_autologin].[member_srl]'; + $this->_test($xml_file, $argsString, $expected); + } + + function test_opage_getOpageList(){ + $xml_file = _XE_PATH_ . "modules/opage/queries/getOpageList.xml"; + $argsString = '$args->s_title = "yuhuu"; + $args->module = \'opage\';'; + $expected = 'SELECT TOP 20 * + FROM [xe_modules] as [modules] + WHERE [module] = ? and ([browser_title] like ?) + ORDER BY [module_srl] desc'; + $this->_test($xml_file, $argsString, $expected); + } + + // TODO Something fishy about this query - to be investigated + /* + function test_syndication_getGrantedModules(){ + $xml_file = _XE_PATH_ . "modules/syndication/queries/getGrantedModules.xml"; + $argsString = '$args->module_srl = 12; + $args->name = array(\'access\',\'view\',\'list\');'; + $expected = 'select "module_srl" + from "xe_module_grants" as "module_grants" + where "name" in (?) + and ("group_srl" >= -2 + or "group_srl" = -2 + or "group_srl" = -2) + group by "module_srl"'; + $this->_test($xml_file, $argsString, $expected); + } + */ + } \ No newline at end of file