18
18
from figures .models import (
19
19
CourseDailyMetrics ,
20
20
CourseMauMetrics ,
21
+ LearnerCourseGradeMetrics ,
21
22
SiteDailyMetrics ,
22
23
SiteMauMetrics ,
23
24
)
45
46
CourseMauMetricsFactory ,
46
47
CourseOverviewFactory ,
47
48
GeneratedCertificateFactory ,
49
+ LearnerCourseGradeMetricsFactory ,
48
50
SiteDailyMetricsFactory ,
49
51
SiteMauMetricsFactory ,
50
52
UserFactory ,
@@ -395,7 +397,7 @@ def test_has_fields(self):
395
397
data = self .serializer .data
396
398
397
399
assert set (data .keys ()) == set (self .expected_fields )
398
-
400
+
399
401
# This is to make sure that the serializer retrieves the correct nested
400
402
# model (UserProfile) data
401
403
assert data ['username' ] == 'alpha_one'
@@ -413,13 +415,6 @@ class TestLearnerCourseDetailsSerializer(object):
413
415
'''
414
416
@pytest .fixture (autouse = True )
415
417
def setup (self , db ):
416
- # self.model = CourseEnrollment
417
- # self.user_attributes = {
418
- # 'username': 'alpha_one',
419
- # 'profile__name': 'Alpha One',
420
- # 'profile__country': 'CA',
421
- # }
422
- #self.user = UserFactory(**self.user_attributes)
423
418
self .site = Site .objects .first ()
424
419
self .certificate_date = datetime .datetime (2018 , 4 , 1 , tzinfo = utc )
425
420
self .course_enrollment = CourseEnrollmentFactory (
@@ -442,6 +437,53 @@ def test_has_fields(self):
442
437
data = self .serializer .data
443
438
assert set (data .keys ()) == expected_fields
444
439
440
+ def test_get_progress_data (self ):
441
+ """
442
+ Method should return data of the form:
443
+ {'course_progress_history': [],
444
+ 'course_progress_details': {
445
+ 'sections_worked': 5,
446
+ 'points_possible': 30.0,
447
+ 'sections_possible': 10,
448
+ 'points_earned': 15.0
449
+ },
450
+ 'course_progress': (0.5,),
451
+ 'course_completed': datetime.datetime(2018, 4, 1, 0, 0, tzinfo=<UTC>)
452
+ }
453
+ """
454
+ metrics_data = dict (
455
+ points_possible = 1 ,
456
+ points_earned = 2 ,
457
+ sections_worked = 3 ,
458
+ sections_possible = 4 )
459
+ lcgm = LearnerCourseGradeMetricsFactory (
460
+ user = self .course_enrollment .user ,
461
+ course_id = str (self .course_enrollment .course_id ),
462
+ ** metrics_data
463
+ )
464
+
465
+ data = self .serializer .get_progress_data (self .course_enrollment )
466
+ details = data ['course_progress_details' ]
467
+ for key , val in metrics_data .items ():
468
+ assert details [key ] == val
469
+ assert data ['course_progress' ] == lcgm .progress_percent
470
+ assert data ['course_completed' ] == self .generated_certificate .created_date
471
+
472
+ def test_get_progress_data_with_no_data (self ):
473
+ """Tests that the serializer method succeeds when no learner course
474
+ grade metrics records
475
+ """
476
+ expected_data = {
477
+ 'course_progress_history' : [],
478
+ 'course_progress_details' : None ,
479
+ 'course_progress' : 0.0 ,
480
+ 'course_completed' : False
481
+ }
482
+ assert not LearnerCourseGradeMetrics .objects .count ()
483
+ course_enrollment = CourseEnrollmentFactory ()
484
+ data = self .serializer .get_progress_data (course_enrollment )
485
+ assert data == expected_data
486
+
445
487
446
488
@pytest .mark .django_db
447
489
class TestLearnerDetailsSerializer (object ):
0 commit comments