From 367dc2573ba56ae147e20bd7c34514082385b680 Mon Sep 17 00:00:00 2001 From: Brandon DeRosier Date: Fri, 13 Feb 2015 07:40:15 -0500 Subject: [PATCH] Test multi-page gitlogs --- lms/djangoapps/dashboard/sysadmin.py | 6 +++-- .../dashboard/tests/test_sysadmin.py | 25 ++++++++++++------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/lms/djangoapps/dashboard/sysadmin.py b/lms/djangoapps/dashboard/sysadmin.py index 6632aba3d2..c7b4a52c5a 100644 --- a/lms/djangoapps/dashboard/sysadmin.py +++ b/lms/djangoapps/dashboard/sysadmin.py @@ -744,8 +744,10 @@ class GitLogs(TemplateView): except PageNotAnInteger: logs = paginator.page(1) except EmptyPage: - # If the page is too high - logs = paginator.page(paginator.num_pages) + # If the page is too high or low + given_page = int(request.GET.get('page')) + page = min(max(1, given_page), paginator.num_pages) + logs = paginator.page(page) mdb.disconnect() context = { diff --git a/lms/djangoapps/dashboard/tests/test_sysadmin.py b/lms/djangoapps/dashboard/tests/test_sysadmin.py index 19c3df4b79..b2ea3d9f31 100644 --- a/lms/djangoapps/dashboard/tests/test_sysadmin.py +++ b/lms/djangoapps/dashboard/tests/test_sysadmin.py @@ -25,6 +25,7 @@ from xmodule.modulestore.tests.django_utils import ( from dashboard.models import CourseImportLog from dashboard.sysadmin import Users from dashboard.git_import import GitImportError +from datetime import datetime from external_auth.models import ExternalAuthMap from student.roles import CourseStaffRole, GlobalStaff from student.tests.factories import UserFactory @@ -589,26 +590,32 @@ class TestSysAdminMongoCourseImport(SysadminBaseTestCase): """ self._setstaff_login() - self._mkdir(getattr(settings, 'GIT_REPO_DIR')) - self._add_edx4edx() + mongoengine.connect(TEST_MONGODB_LOG['db']) - for page in [-1, 0, 1, 2, 'abc']: - # Test the page parameter in various different ways + for _ in xrange(15): + CourseImportLog( + course_id=SlashSeparatedCourseKey("test", "test", "test"), + location="location", + import_log="import_log", + git_log="git_log", + repo_dir="repo_dir", + created=datetime.now() + ).save() + + for page, expected in [(-1, 1), (1, 1), (2, 2), (30, 2), ('abc', 1)]: response = self.client.get( '{}?page={}'.format( - reverse('gitlogs_detail', kwargs={ - 'course_id': 'MITx/edx4edx/edx4edx' - }), + reverse('gitlogs'), page ) ) self.assertIn( - 'Page 1 of 1', + 'Page {} of 2'.format(expected), response.content ) - self._rm_edx4edx() + CourseImportLog.objects.delete() def test_gitlog_courseteam_access(self): """