public function testBrowseWithOrderRightParams() { $permissions = []; for ($i = 0; $i < 10; ++$i) { $permissions[] = factory(Permission::class)->create(['name' => 'Name ' . $i, 'display_name' => 'Display name ' . $i]); } $permissionsID = Permission::select('*')->orderBy('id', 'desc')->get(); $permissionsDisplayName = Permission::select('*')->orderBy('display_name', 'desc')->get(); $permissionsName = Permission::select('*')->orderBy('name', 'desc')->get(); // check order permissions with full input $res = $this->call('GET', '/permissions?sort=name&direction=desc'); $this->assertEquals(200, $res->getStatusCode()); $results = json_decode($res->getContent()); for ($i = 0; $i < count($permissionsName); ++$i) { $this->assertEquals($permissionsName[$i]->id, $results->entities[$i]->id); } $res = $this->call('GET', '/permissions?sort=name&direction=asc'); $this->assertEquals(200, $res->getStatusCode()); $results = json_decode($res->getContent()); for ($i = 0; $i < count($permissionsName); ++$i) { $this->assertEquals($permissionsName[9 - $i]->id, $results->entities[$i]->id); } // check order permission with other fields $res = $this->call('GET', '/permissions?sort=display_name'); $this->assertEquals(200, $res->getStatusCode()); $results = json_decode($res->getContent()); for ($i = 0; $i < count($permissionsDisplayName); ++$i) { $this->assertEquals($permissionsDisplayName[$i]->id, $results->entities[$i]->id); } // check order permissions with equals value of order field, permission is sorted follow id field with desc $permissions = []; for ($i = 0; $i < 10; ++$i) { if (in_array($i, [2, 4, 6])) { $permissions[] = factory(Permission::class)->create(['display_name' => 'A']); } $permissions[] = factory(Permission::class)->create(); } $permissions1 = Permission::where('display_name', '=', 'A')->orderBy('id', 'desc')->get(); $permissions2 = Permission::where('display_name', '<>', 'A')->orderBy('order', 'asc')->get(); $permissions = array_merge((array) $permissions1, (array) $permissions2); $res = $this->call('GET', '/permissions?sort=display_name&direction=asc'); $this->assertEquals(200, $res->getStatusCode()); $results = json_decode($res->getContent()); for ($i = 1; $i < count($permissions); ++$i) { $this->assertEquals($permissions[$i]->id, $results->entities[$i]->id); } }