def test_positive_list_filters_with_pagination(self): """Make sure filters list can be displayed with different items per page value :id: b9c7c6c1-70c2-4d7f-8d36-fa8613acc865 :BZ: 1428516 :expectedresults: `per-page` correctly sets amount of items displayed per page, different `per-page` values divide a list into correct number of pages :CaseImportance: Critical """ role = make_role() res_types = iter(PERMISSIONS.keys()) permissions = [] # Collect more than 20 different permissions while len(permissions) <= 20: permissions += [ permission['name'] for permission in Filter.available_permissions( {'resource-type': next(res_types)}) ] # Create a filter for each permission for perm in permissions: make_filter({ 'role': role['name'], 'permissions': perm, }) # Test different `per-page` values for per_page in (1, 5, 20): with self.subTest(per_page): # Verify the first page contains exactly the same items count # as `per-page` value filters = Role.filters({ 'name': role['name'], 'per-page': per_page, }) self.assertEqual(len(filters), per_page) # Verify pagination and total amount of pages by checking the # items count on the last page last_page = (len(permissions) / per_page + int(len(permissions) % per_page != 0)) filters = Role.filters({ 'name': role['name'], 'page': last_page, 'per-page': per_page, }) self.assertEqual( len(filters), len(permissions) % per_page or per_page)
def test_positive_list_filters_with_pagination(self): """Make sure filters list can be displayed with different items per page value :id: b9c7c6c1-70c2-4d7f-8d36-fa8613acc865 :BZ: 1428516 :expectedresults: `per-page` correctly sets amount of items displayed per page, different `per-page` values divide a list into correct number of pages :CaseImportance: Critical """ role = make_role() res_types = iter(PERMISSIONS.keys()) permissions = [] # Collect more than 20 different permissions while len(permissions) <= 20: permissions += [ permission['name'] for permission in Filter.available_permissions( {'resource-type': next(res_types)}) ] # Create a filter for each permission for perm in permissions: make_filter({ 'role': role['name'], 'permissions': perm, }) # Test different `per-page` values for per_page in (1, 5, 20): with self.subTest(per_page): # Verify the first page contains exactly the same items count # as `per-page` value filters = Role.filters({ 'name': role['name'], 'per-page': per_page, }) self.assertEqual(len(filters), per_page) # Verify pagination and total amount of pages by checking the # items count on the last page last_page = (len(permissions) / per_page + int(len(permissions) % per_page != 0)) filters = Role.filters({ 'name': role['name'], 'page': last_page, 'per-page': per_page, }) self.assertEqual(len(filters), len(permissions) % per_page or per_page)
def make_role_with_permissions(self): """Create new role with a filter""" role = make_role() res_types = iter(PERMISSIONS.keys()) permissions = [] # Collect more than 20 different permissions while len(permissions) <= 20: permissions += [ permission['name'] for permission in Filter.available_permissions( {"search": f"resource_type={next(res_types)}"}) ] # Create a filter for each permission for perm in permissions: make_filter({'role': role['name'], 'permissions': perm}) return { 'role': role, 'permissions': permissions, }