def test_dashboard_rendering(self):
     """
     Tests that the dashboard renders the recent enrollment messages appropriately.
     """
     config = DashboardConfiguration(recent_enrollment_time_delta=600)
     config.save()
     self.client = Client()
     self.client.login(username=self.student.username, password='******')
     response = self.client.get(reverse("dashboard"))
     self.assertContains(response, "You have successfully enrolled in")
    def test_zero_second_delta(self):
        """
        Tests that the recent enrollment list is empty if configured to zero seconds.
        """
        config = DashboardConfiguration(recent_enrollment_time_delta=0)
        config.save()
        courses_list = list(get_course_enrollment_pairs(self.student, None, []))
        self.assertEqual(len(courses_list), 2)

        recent_course_list = _get_recently_enrolled_courses(courses_list)
        self.assertEqual(len(recent_course_list), 0)
    def test_recently_enrolled_courses(self):
        """
        Test if the function for filtering recent enrollments works appropriately.
        """
        config = DashboardConfiguration(recent_enrollment_time_delta=60)
        config.save()
        # get courses through iterating all courses
        courses_list = list(get_course_enrollment_pairs(self.student, None, []))
        self.assertEqual(len(courses_list), 2)

        recent_course_list = _get_recently_enrolled_courses(courses_list)
        self.assertEqual(len(recent_course_list), 1)
    def test_enrollments_sorted_most_recent(self):
        """
        Test that the list of newly created courses are properly sorted to show the most
        recent enrollments first.

        """
        config = DashboardConfiguration(recent_enrollment_time_delta=600)
        config.save()

        # Create a number of new enrollments and courses, and force their creation behind
        # the first enrollment
        course_location = locator.CourseLocator('Org2', 'Course2', 'Run2')
        _, enrollment2 = self._create_course_and_enrollment(course_location)
        enrollment2.created = datetime.datetime.now(UTC) - datetime.timedelta(seconds=5)
        enrollment2.save()

        course_location = locator.CourseLocator('Org3', 'Course3', 'Run3')
        _, enrollment3 = self._create_course_and_enrollment(course_location)
        enrollment3.created = datetime.datetime.now(UTC) - datetime.timedelta(seconds=10)
        enrollment3.save()

        course_location = locator.CourseLocator('Org4', 'Course4', 'Run4')
        _, enrollment4 = self._create_course_and_enrollment(course_location)
        enrollment4.created = datetime.datetime.now(UTC) - datetime.timedelta(seconds=15)
        enrollment4.save()

        course_location = locator.CourseLocator('Org5', 'Course5', 'Run5')
        _, enrollment5 = self._create_course_and_enrollment(course_location)
        enrollment5.created = datetime.datetime.now(UTC) - datetime.timedelta(seconds=20)
        enrollment5.save()

        courses_list = list(get_course_enrollment_pairs(self.student, None, []))
        self.assertEqual(len(courses_list), 6)

        recent_course_list = _get_recently_enrolled_courses(courses_list)
        self.assertEqual(len(recent_course_list), 5)

        self.assertEqual(recent_course_list[1][1], enrollment2)
        self.assertEqual(recent_course_list[2][1], enrollment3)
        self.assertEqual(recent_course_list[3][1], enrollment4)
        self.assertEqual(recent_course_list[4][1], enrollment5)
Example #5
0
def _get_recently_enrolled_courses(course_enrollments):
    """
    Given a list of enrollments, filter out all but recent enrollments.

    Args:
        course_enrollments (list[CourseEnrollment]): A list of course enrollments.

    Returns:
        list[CourseEnrollment]: A list of recent course enrollments.
    """
    seconds = DashboardConfiguration.current().recent_enrollment_time_delta
    time_delta = (datetime.datetime.now(UTC) - datetime.timedelta(seconds=seconds))
    return [
        enrollment for enrollment in course_enrollments
        # If the enrollment has no created date, we are explicitly excluding the course
        # from the list of recent enrollments.
        if enrollment.is_active and enrollment.created > time_delta
    ]
 def _configure_message_timeout(self, timeout):
     """Configure the amount of time the enrollment message will be displayed. """
     config = DashboardConfiguration(recent_enrollment_time_delta=timeout)
     config.save()
 def _configure_message_timeout(self, timeout):
     """Configure the amount of time the enrollment message will be displayed. """
     config = DashboardConfiguration(recent_enrollment_time_delta=timeout)
     config.save()