From 43ce5470cac33cc60146588d8f3262d149a8f731 Mon Sep 17 00:00:00 2001 From: Roly Rudy Gutierrez Pinto Date: Thu, 12 Dec 2019 16:10:44 -0400 Subject: [PATCH] PMC-131 In section Admin->Users->Groups the second page of the list always shows double the corresponding amount of groups --- tests/bootstrap.php | 1 + .../engine/methods/groups/GroupsAjaxTest.php | 74 +++++++++++++++++++ workflow/engine/controllers/admin.php | 2 +- workflow/engine/controllers/adminProxy.php | 2 +- .../engine/methods/groups/groups_Ajax.php | 4 +- 5 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 tests/unit/workflow/engine/methods/groups/GroupsAjaxTest.php diff --git a/tests/bootstrap.php b/tests/bootstrap.php index c874bbc81..44ebccbbd 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -75,6 +75,7 @@ define("PATH_DATA_SITE", PATH_DATA . "sites/" . config("system.workspace") . "/" define("PATH_DYNAFORM", PATH_DATA_SITE . "xmlForms/"); define("PATH_DATA_MAILTEMPLATES", PATH_DATA_SITE . "mailTemplates/"); define("PATH_DATA_PUBLIC", PATH_DATA_SITE . "public/"); +define("PATH_CONTROLLERS", PATH_CORE . "controllers" . PATH_SEP); G::defineConstants(); /** diff --git a/tests/unit/workflow/engine/methods/groups/GroupsAjaxTest.php b/tests/unit/workflow/engine/methods/groups/GroupsAjaxTest.php new file mode 100644 index 000000000..daadbf09f --- /dev/null +++ b/tests/unit/workflow/engine/methods/groups/GroupsAjaxTest.php @@ -0,0 +1,74 @@ +settingUserLogged(); + Groupwf::truncate(); + $this->createGroups(); + } + + /** + * Create records in the GROUPSWF table + */ + private function createGroups() + { + $this->groups = factory(Groupwf::class, 10)->create(); + } + + /** + * This starts a valid user in session with the appropriate permissions. + * @global object $RBAC + */ + private function settingUserLogged() + { + global $RBAC; + + $user = User::where('USR_ID', '=', 1) + ->get() + ->first(); + + $_SESSION['USER_LOGGED'] = $user['USR_UID']; + + $RBAC = RBAC::getSingleton(PATH_DATA, session_id()); + $RBAC->initRBAC(); + $RBAC->loadUserRolePermission('PROCESSMAKER', $_SESSION['USER_LOGGED']); + } + + /** + * This tests the answer of the option groupsList. + * @test + */ + public function it_should_return_option_groups_list() + { + global $RBAC; + $_POST['action'] = 'groupsList'; + + $fileName = PATH_METHODS . 'groups/groups_Ajax.php'; + + ob_start(); + require_once $fileName; + $content = ob_get_clean(); + $content = json_decode($content, JSON_OBJECT_AS_ARRAY); + + $this->assertArrayHasKey("success", $content); + $this->assertArrayHasKey("groups", $content); + $this->assertTrue($content["success"]); + $this->assertTrue(is_array($content["groups"])); + } +} diff --git a/workflow/engine/controllers/admin.php b/workflow/engine/controllers/admin.php index a09e8e548..9870ee102 100644 --- a/workflow/engine/controllers/admin.php +++ b/workflow/engine/controllers/admin.php @@ -69,7 +69,7 @@ class Admin extends Controller $this->setJSVar( 'CONFIG', $Config ); $this->setJSVar( 'FORMATS', $c->getFormats() ); - $this->setJSVar( 'uxTypes', AdminProxy::getUxTypesList( 'list' ) ); + $this->setJSVar( 'uxTypes', adminProxy::getUxTypesList( 'list' ) ); G::RenderPage( 'publish', 'extJs' ); } diff --git a/workflow/engine/controllers/adminProxy.php b/workflow/engine/controllers/adminProxy.php index c873072fb..8ecb2e07f 100644 --- a/workflow/engine/controllers/adminProxy.php +++ b/workflow/engine/controllers/adminProxy.php @@ -233,7 +233,7 @@ class adminProxy extends HttpProxyController return array('success' => $success, 'users' => $usersAdmin); } - public function getUxTypesList($type = 'assoc') + public static function getUxTypesList($type = 'assoc') { $list = array(); diff --git a/workflow/engine/methods/groups/groups_Ajax.php b/workflow/engine/methods/groups/groups_Ajax.php index 30801d56f..4da61b888 100644 --- a/workflow/engine/methods/groups/groups_Ajax.php +++ b/workflow/engine/methods/groups/groups_Ajax.php @@ -59,9 +59,7 @@ switch ($_POST['action']) { $sortDir = isset($_REQUEST["dir"]) ? $_REQUEST["dir"] : ""; global $RBAC; - if ($limit == $start) { - $limit = $limit + $limit; - } + $tasks = new TaskUser(); $aTask = $tasks->getCountAllTaksByGroups();