feat: learner home get suggested courses (#31004)

* feat: get suggested courses

* style: run black

* docs: update suggested courses mock

* docs: remove cardID from mock

* docs: fix mock course.title to course.courseName

* docs: fix mock course.bannerUrl to bannerImgSrc

* docs: fix mock provider to courseProvider

* docs: remove old mock courseProvider fields

* docs: fix mock "grades" to "gradeData"

* docs: fix mock remove courseRun.lastEnrolled

* docs: fix mock add enrollment.lastEnrolled

* docs: mock remove enrollment.isStarted

* docs: mock fix bad nesting in courseRun

* docs: mock certificates to certificate

* docs: mock remove certificate.isAvailable

* docs: mock remove entitlement.isEntitlement

* docs: mock add entitlement.expirationDate

* docs: mock fix some entitlement inconsistencies

* docs: mock remove entitlement.canViewCourse

* docs: mock nest relatedPrograms under programs

* fix: return null for missing resumeUrl

* test: return null for missing resumeUrl

* refactor: update suggested course fields

* refactor: update related programs fields

* docs: remove entitlement.expirationDate from mock

Co-authored-by: nsprenkle <nsprenkle@2u.com>
This commit is contained in:
Nathan Sprenkle
2022-09-16 14:41:02 -04:00
committed by GitHub
parent 8162d21566
commit 5f1530cd57
5 changed files with 1088 additions and 1046 deletions

View File

@@ -1,12 +1,11 @@
{
"courses": [
{
"cardId": "card-id0",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
@@ -27,7 +26,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": false
"isVerified": false,
"lastEnrolled": null
},
"courseRun": {
"isStarted": false,
@@ -40,44 +40,42 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number0-course-id0",
"lastEnrolled": "2022-09-06T15:20:57.513Z"
"courseId": "course-number0-course-id0"
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"title": "Course Name 0",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"courseName": "Course Name 0",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg",
"courseNumber": "course-number0"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id1",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -92,10 +90,9 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number1-course-id1",
"lastEnrolled": "2022-09-05T15:20:57.513Z"
"courseId": "course-number1-course-id1"
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
@@ -116,33 +113,33 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": false
"isVerified": false,
"lastEnrolled": null
},
"provider": {
"name": "MIT",
"website": "www.mit.edu",
"email": "support@mit.edu"
"courseProvider": {
"name": "MIT"
},
"course": {
"title": "Course Name 1",
"bannerUrl": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 1",
"bannerImgSrc": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number1"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id2",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -157,8 +154,7 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number2-course-id2",
"lastEnrolled": "2022-09-04T15:20:57.513Z"
"courseId": "course-number2-course-id2"
},
"enrollment": {
"accessExpirationDate": "11/11/2000",
@@ -174,26 +170,28 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": false
"isVerified": false,
"lastEnrolled": null
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": null,
"courseProvider": null,
"course": {
"title": "Course Name 2",
"bannerUrl": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 2",
"bannerImgSrc": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number2"
},
"relatedPrograms": []
"programs": {
"relatedPrograms": []
}
},
{
"cardId": "card-id3",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -208,8 +206,7 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number3-course-id3",
"lastEnrolled": "2022-09-03T15:20:57.513Z"
"courseId": "course-number3-course-id3"
},
"enrollment": {
"accessExpirationDate": "11/11/2000",
@@ -225,50 +222,50 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": false
"isVerified": false,
"lastEnrolled": null
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"title": "Course Name 3",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"courseName": "Course Name 3",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg",
"courseNumber": "course-number3"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id4",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -283,8 +280,7 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number4-course-id4",
"lastEnrolled": "2022-09-02T15:20:57.513Z"
"courseId": "course-number4-course-id4"
},
"enrollment": {
"accessExpirationDate": "11/11/2000",
@@ -300,40 +296,40 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": false
"isVerified": false,
"lastEnrolled": null
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "MIT",
"website": "www.mit.edu",
"email": "support@mit.edu"
"courseProvider": {
"name": "MIT"
},
"course": {
"title": "Course Name 4",
"bannerUrl": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 4",
"bannerImgSrc": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number4"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id5",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -348,8 +344,7 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number5-course-id5",
"lastEnrolled": "2022-09-01T15:20:57.513Z"
"courseId": "course-number5-course-id5"
},
"enrollment": {
"accessExpirationDate": "11/11/2000",
@@ -365,26 +360,28 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": false
"isVerified": false,
"lastEnrolled": null
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": null,
"courseProvider": null,
"course": {
"title": "Course Name 5",
"bannerUrl": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 5",
"bannerImgSrc": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number5"
},
"relatedPrograms": []
"programs": {
"relatedPrograms": []
}
},
{
"cardId": "card-id6",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -399,8 +396,7 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number6-course-id6",
"lastEnrolled": "2022-08-31T15:20:57.513Z"
"courseId": "course-number6-course-id6"
},
"enrollment": {
"accessExpirationDate": "11/11/3030",
@@ -417,55 +413,54 @@
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": false,
"isStarted": true
"lastEnrolled": null
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"title": "Course Name 6",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"courseName": "Course Name 6",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg",
"courseNumber": "course-number6"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id7",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
"courseRun": {
"isStarted": false,
"isStarted": true,
"isArchived": false,
"startDate": "11/11/3030",
"endDate": "11/11/4040",
@@ -475,11 +470,7 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseRun": {
"isStarted": true
},
"courseId": "course-number7-course-id7",
"lastEnrolled": "2022-08-30T15:20:57.513Z"
"courseId": "course-number7-course-id7"
},
"enrollment": {
"accessExpirationDate": "11/11/2000",
@@ -496,45 +487,44 @@
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": false,
"isStarted": true
"lastEnrolled": null
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "MIT",
"website": "www.mit.edu",
"email": "support@mit.edu"
"courseProvider": {
"name": "MIT"
},
"course": {
"title": "Course Name 7",
"bannerUrl": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 7",
"bannerImgSrc": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number7"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id8",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
"courseRun": {
"isStarted": false,
"isStarted": true,
"isArchived": false,
"startDate": "11/11/3030",
"endDate": "11/11/4040",
@@ -544,11 +534,7 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseRun": {
"isStarted": true
},
"courseId": "course-number8-course-id8",
"lastEnrolled": "2022-08-29T15:20:57.514Z"
"courseId": "course-number8-course-id8"
},
"enrollment": {
"accessExpirationDate": "11/11/2000",
@@ -565,31 +551,32 @@
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": false,
"isStarted": true
"lastEnrolled": null
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": null,
"courseProvider": null,
"course": {
"title": "Course Name 8",
"bannerUrl": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 8",
"bannerImgSrc": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number8"
},
"relatedPrograms": []
"programs": {
"relatedPrograms": []
}
},
{
"cardId": "card-id9",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
"courseRun": {
"isStarted": false,
"isStarted": true,
"isArchived": false,
"startDate": "11/11/3030",
"endDate": "11/11/4040",
@@ -599,12 +586,7 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseRun": {
"isStarted": true,
"endDate": "11/11/2000"
},
"courseId": "course-number9-course-id9",
"lastEnrolled": "2022-08-28T15:20:57.514Z"
"courseId": "course-number9-course-id9"
},
"enrollment": {
"accessExpirationDate": "11/11/2000",
@@ -621,74 +603,67 @@
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": false,
"isStarted": true
"lastEnrolled": null
},
"grade": {
"isPassing": false
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"title": "Course Name 9",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"courseName": "Course Name 9",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg",
"courseNumber": "course-number9"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id10",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
"courseRun": {
"isStarted": false,
"isArchived": false,
"isStarted": true,
"isArchived": true,
"startDate": "11/11/3030",
"endDate": "11/11/4040",
"endDate": "11/11/2000",
"minPassingGrade": 70,
"homeUrl": "edx.com/courses/my-course-url/home",
"marketingUrl": "edx.com/courses/my-course-url/marketing",
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseRun": {
"isStarted": true,
"isArchived": true,
"endDate": "11/11/2000"
},
"courseId": "course-number10-course-id10",
"lastEnrolled": "2022-08-27T15:20:57.514Z"
"courseId": "course-number10-course-id10"
},
"enrollment": {
"accessExpirationDate": "11/11/2000",
@@ -705,43 +680,42 @@
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": false,
"isStarted": true
"lastEnrolled": null
},
"grade": {
"isPassing": false
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "MIT",
"website": "www.mit.edu",
"email": "support@mit.edu"
"courseProvider": {
"name": "MIT"
},
"course": {
"title": "Course Name 10",
"bannerUrl": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 10",
"bannerImgSrc": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number10"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id11",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -759,9 +733,10 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
@@ -779,20 +754,20 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number11-course-id11",
"lastEnrolled": "2022-08-26T15:20:57.514Z"
"courseId": "course-number11-course-id11"
},
"provider": null,
"courseProvider": null,
"course": {
"title": "Course Name 11",
"bannerUrl": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 11",
"bannerImgSrc": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number11"
},
"relatedPrograms": []
"programs": {
"relatedPrograms": []
}
},
{
"cardId": "card-id12",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -807,8 +782,7 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number12-course-id12",
"lastEnrolled": "2022-08-25T15:20:57.514Z"
"courseId": "course-number12-course-id12"
},
"enrollment": {
"accessExpirationDate": "11/11/3030",
@@ -824,50 +798,50 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"title": "Course Name 12",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"courseName": "Course Name 12",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg",
"courseNumber": "course-number12"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id13",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -882,8 +856,7 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number13-course-id13",
"lastEnrolled": "2022-08-24T15:20:57.514Z"
"courseId": "course-number13-course-id13"
},
"enrollment": {
"accessExpirationDate": "11/11/3030",
@@ -899,40 +872,40 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "MIT",
"website": "www.mit.edu",
"email": "support@mit.edu"
"courseProvider": {
"name": "MIT"
},
"course": {
"title": "Course Name 13",
"bannerUrl": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 13",
"bannerImgSrc": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number13"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id14",
"grades": {
"gradeData": {
"isPassing": false
},
"entitlement": null,
@@ -947,8 +920,7 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number14-course-id14",
"lastEnrolled": "2022-08-23T15:20:57.514Z"
"courseId": "course-number14-course-id14"
},
"enrollment": {
"accessExpirationDate": "11/11/3030",
@@ -964,26 +936,28 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": null,
"courseProvider": null,
"course": {
"title": "Course Name 14",
"bannerUrl": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 14",
"bannerImgSrc": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number14"
},
"relatedPrograms": []
"programs": {
"relatedPrograms": []
}
},
{
"cardId": "card-id15",
"grades": {
"gradeData": {
"isPassing": false
},
"entitlement": null,
@@ -1001,7 +975,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": true,
@@ -1014,51 +989,49 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number15-course-id15",
"lastEnrolled": "2022-08-22T15:20:57.514Z"
"courseId": "course-number15-course-id15"
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"title": "Course Name 15",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"courseName": "Course Name 15",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg",
"courseNumber": "course-number15"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id16",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -1076,7 +1049,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": true,
@@ -1089,42 +1063,39 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number16-course-id16",
"lastEnrolled": "2022-08-21T15:20:57.514Z"
"courseId": "course-number16-course-id16"
},
"certificates": {
"certificate": {
"availableDate": "11/11/3030",
"isRestricted": false,
"isEarned": true,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview",
"isAvailable": false
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "MIT",
"website": "www.mit.edu",
"email": "support@mit.edu"
"courseProvider": {
"name": "MIT"
},
"course": {
"title": "Course Name 16",
"bannerUrl": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 16",
"bannerImgSrc": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number16"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id17",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -1142,7 +1113,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": true,
@@ -1155,27 +1127,27 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number17-course-id17",
"lastEnrolled": "2022-08-20T15:20:57.514Z"
"courseId": "course-number17-course-id17"
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": true,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": null,
"courseProvider": null,
"course": {
"title": "Course Name 17",
"bannerUrl": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 17",
"bannerImgSrc": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number17"
},
"relatedPrograms": []
"programs": {
"relatedPrograms": []
}
},
{
"cardId": "card-id18",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -1193,7 +1165,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": true,
@@ -1206,52 +1179,49 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number18-course-id18",
"lastEnrolled": "2022-08-19T15:20:57.514Z"
"courseId": "course-number18-course-id18"
},
"certificates": {
"certificate": {
"availableDate": "11/11/2000",
"isRestricted": false,
"isEarned": true,
"isDownloadable": true,
"certPreviewUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"isAvailable": true
"certPreviewUrl": "https://edx-cdn.org/v3/prod/logo.svg"
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"title": "Course Name 18",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"courseName": "Course Name 18",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg",
"courseNumber": "course-number18"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id19",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -1269,7 +1239,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": true,
@@ -1282,42 +1253,39 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number19-course-id19",
"lastEnrolled": "2022-08-18T15:20:57.514Z"
"courseId": "course-number19-course-id19"
},
"certificates": {
"certificate": {
"availableDate": "11/11/2000",
"isRestricted": false,
"isEarned": true,
"isDownloadable": true,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview",
"isAvailable": true
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "MIT",
"website": "www.mit.edu",
"email": "support@mit.edu"
"courseProvider": {
"name": "MIT"
},
"course": {
"title": "Course Name 19",
"bannerUrl": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 19",
"bannerImgSrc": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number19"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id20",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": null,
@@ -1335,7 +1303,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": true,
@@ -1348,28 +1317,27 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number20-course-id20",
"lastEnrolled": "2022-08-17T15:20:57.514Z"
"courseId": "course-number20-course-id20"
},
"certificates": {
"certificate": {
"availableDate": "11/11/2000",
"isRestricted": false,
"isEarned": true,
"isDownloadable": true,
"certPreviewUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"isAvailable": true
"certPreviewUrl": "https://edx-cdn.org/v3/prod/logo.svg"
},
"provider": null,
"courseProvider": null,
"course": {
"title": "Course Name 20",
"bannerUrl": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 20",
"bannerImgSrc": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number20"
},
"relatedPrograms": []
"programs": {
"relatedPrograms": []
}
},
{
"cardId": "card-id21",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": {
@@ -1401,10 +1369,8 @@
"courseId": "course-number1004-course-id1004"
}
],
"canViewCourse": false,
"changeDeadline": "11/11/3030",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": false,
"isFulfilled": true,
"isRefundable": true
@@ -1423,7 +1389,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": false,
@@ -1436,51 +1403,49 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number21-course-id21",
"lastEnrolled": "2022-08-16T15:20:57.514Z"
"courseId": "course-number21-course-id21"
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"title": "Course Name 21",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"courseName": "Course Name 21",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg",
"courseNumber": "course-number21"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id22",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": {
@@ -1512,10 +1477,8 @@
"courseId": "course-number1004-course-id1004"
}
],
"canViewCourse": true,
"changeDeadline": "11/11/3030",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": false,
"isFulfilled": true,
"isRefundable": true
@@ -1534,7 +1497,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": true,
@@ -1547,41 +1511,39 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number22-course-id22",
"lastEnrolled": "2022-08-15T15:20:57.514Z"
"courseId": "course-number22-course-id22"
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "MIT",
"website": "www.mit.edu",
"email": "support@mit.edu"
"courseProvider": {
"name": "MIT"
},
"course": {
"title": "Course Name 22",
"bannerUrl": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 22",
"bannerImgSrc": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number22"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id23",
"grades": {
"gradeData": {
"isPassing": false
},
"entitlement": {
@@ -1613,10 +1575,8 @@
"courseId": "course-number1004-course-id1004"
}
],
"canViewCourse": true,
"changeDeadline": "11/11/3030",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": false,
"isFulfilled": true,
"isRefundable": true
@@ -1635,7 +1595,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": true,
@@ -1648,27 +1609,27 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number23-course-id23",
"lastEnrolled": "2022-08-14T15:20:57.514Z"
"courseId": "course-number23-course-id23"
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": null,
"courseProvider": null,
"course": {
"title": "Course Name 23",
"bannerUrl": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 23",
"bannerImgSrc": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number23"
},
"relatedPrograms": []
"programs": {
"relatedPrograms": []
}
},
{
"cardId": "card-id24",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": {
@@ -1700,10 +1661,8 @@
"courseId": "course-number1004-course-id1004"
}
],
"canViewCourse": true,
"changeDeadline": "11/11/2000",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": false,
"isFulfilled": true,
"isRefundable": true
@@ -1722,7 +1681,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": true,
@@ -1735,60 +1695,56 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number24-course-id24",
"lastEnrolled": "2022-08-13T15:20:57.514Z"
"courseId": "course-number24-course-id24"
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"title": "Course Name 24",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"courseName": "Course Name 24",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg",
"courseNumber": "course-number24"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id25",
"grades": {
"gradeData": {
"isPassing": false
},
"entitlement": {
"uuid": "entitlement-course-uuid-4",
"availableSessions": null,
"canViewCourse": true,
"changeDeadline": "11/11/2000",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": false,
"isFulfilled": true,
"isRefundable": false
@@ -1807,7 +1763,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": true,
@@ -1820,50 +1777,46 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number25-course-id25",
"lastEnrolled": "2022-08-12T15:20:57.514Z"
"courseId": "course-number25-course-id25"
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "MIT",
"website": "www.mit.edu",
"email": "support@mit.edu"
"courseProvider": {
"name": "MIT"
},
"course": {
"title": "Course Name 25",
"bannerUrl": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 25",
"bannerImgSrc": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number25"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id26",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": {
"uuid": "entitlement-course-uuid-5",
"availableSessions": null,
"canViewCourse": true,
"changeDeadline": "11/11/2000",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": false,
"isFulfilled": true,
"isRefundable": false
@@ -1882,7 +1835,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": true,
@@ -1895,40 +1849,37 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number26-course-id26",
"lastEnrolled": "2022-08-11T15:20:57.514Z"
"courseId": "course-number26-course-id26"
},
"certificates": {
"certificate": {
"availableDate": "11/11/2000",
"isRestricted": false,
"isEarned": true,
"isDownloadable": true,
"certPreviewUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"isAvailable": true
"certPreviewUrl": "https://edx-cdn.org/v3/prod/logo.svg"
},
"provider": null,
"courseProvider": null,
"course": {
"title": "Course Name 26",
"bannerUrl": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 26",
"bannerImgSrc": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number26"
},
"relatedPrograms": []
"programs": {
"relatedPrograms": []
}
},
{
"cardId": "card-id27",
"grades": {
"gradeData": {
"isPassing": false
},
"entitlement": {
"uuid": "entitlement-course-uuid-6",
"availableSessions": null,
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isFulfilled": true,
"isRefundable": false,
"canViewCourse": true,
"changeDeadline": "11/11/2000",
"isExpired": false
"enrollmentUrl": "/entitlement-enrollment",
"isExpired": false,
"isFulfilled": true,
"isRefundable": false
},
"enrollment": {
"accessExpirationDate": "11/11/3030",
@@ -1944,7 +1895,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": true,
@@ -1957,63 +1909,59 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number27-course-id27",
"lastEnrolled": "2022-08-10T15:20:57.514Z"
"courseId": "course-number27-course-id27"
},
"certificates": {
"certificate": {
"availableDate": null,
"isRestricted": false,
"isEarned": false,
"isDownloadable": false,
"certPreviewUrl": "edx.com/courses/my-course-url/cert-preview"
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"title": "Course Name 27",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"courseName": "Course Name 27",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg",
"courseNumber": "course-number27"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id28",
"grades": {
"gradeData": {
"isPassing": true
},
"entitlement": {
"uuid": "entitlement-course-uuid-7",
"availableSessions": null,
"canViewCourse": false,
"changeDeadline": "11/11/2000",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": false,
"isRefundable": false,
"isFulfilled": true
"isFulfilled": true,
"isRefundable": false
},
"enrollment": {
"accessExpirationDate": "11/11/3030",
@@ -2029,7 +1977,8 @@
"isEmailEnabled": false,
"hasOptedOutOfEmail": false,
"isEnrolled": true,
"isVerified": true
"isVerified": true,
"lastEnrolled": null
},
"courseRun": {
"isStarted": true,
@@ -2042,41 +1991,38 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number28-course-id28",
"lastEnrolled": "2022-08-09T15:20:57.514Z"
"courseId": "course-number28-course-id28"
},
"certificates": {
"certificate": {
"availableDate": "11/11/2000",
"isRestricted": false,
"isEarned": true,
"isDownloadable": true,
"certPreviewUrl": "https://edx-cdn.org/v3/prod/logo.svg",
"isAvailable": true
"certPreviewUrl": "https://edx-cdn.org/v3/prod/logo.svg"
},
"provider": {
"name": "MIT",
"website": "www.mit.edu",
"email": "support@mit.edu"
"courseProvider": {
"name": "MIT"
},
"course": {
"title": "Course Name 28",
"bannerUrl": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseName": "Course Name 28",
"bannerImgSrc": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg",
"courseNumber": "course-number28"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id100",
"enrollment": {
"accessExpirationDate": null,
"canUpgrade": false,
@@ -2094,8 +2040,8 @@
"isVerified": false,
"lastEnrolled": null
},
"grades": null,
"certificates": null,
"gradeData": null,
"certificate": null,
"courseRun": null,
"entitlement": {
"uuid": "entitlement-course-uuid-10",
@@ -2126,48 +2072,45 @@
"courseId": "course-number1004-course-id1004"
}
],
"canViewCourse": false,
"changeDeadline": "11/11/3030",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": false,
"isFulfilled": false,
"isRefundable": true
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"courseNumber": "course-number100",
"title": "Course Name 100",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg"
"courseName": "Course Name 100",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id101",
"enrollment": {
"accessExpirationDate": null,
"canUpgrade": false,
@@ -2185,8 +2128,8 @@
"isVerified": false,
"lastEnrolled": null
},
"grades": null,
"certificates": null,
"gradeData": null,
"certificate": null,
"courseRun": null,
"entitlement": {
"uuid": "entitlement-course-uuid-11",
@@ -2217,38 +2160,35 @@
"courseId": "course-number1004-course-id1004"
}
],
"canViewCourse": false,
"changeDeadline": "Sat Nov 05 2022",
"changeDeadline": "11/05/2022",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": false,
"isFulfilled": false,
"isRefundable": true
},
"provider": {
"name": "MIT",
"website": "www.mit.edu",
"email": "support@mit.edu"
"courseProvider": {
"name": "MIT"
},
"course": {
"courseNumber": "course-number101",
"title": "Course Name 101",
"bannerUrl": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg"
"courseName": "Course Name 101",
"bannerImgSrc": "https://courses.edx.org/asset-v1:HarvardX+PH525.5x+3T2020+type@thumbnail+block@course_image-375x200.jpg"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id102",
"enrollment": {
"accessExpirationDate": null,
"canUpgrade": false,
@@ -2266,8 +2206,8 @@
"isVerified": false,
"lastEnrolled": null
},
"grades": null,
"certificates": null,
"gradeData": null,
"certificate": null,
"courseRun": null,
"entitlement": {
"uuid": "entitlement-course-uuid-12",
@@ -2298,24 +2238,23 @@
"courseId": "course-number1004-course-id1004"
}
],
"canViewCourse": false,
"changeDeadline": "11/11/2000",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": false,
"isFulfilled": false,
"isRefundable": true
},
"provider": null,
"courseProvider": null,
"course": {
"courseNumber": "course-number102",
"title": "Course Name 102",
"bannerUrl": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg"
"courseName": "Course Name 102",
"bannerImgSrc": "https://courses.edx.org/asset-v1:USMx+LDT200x+2T2021+type@thumbnail+block@course_image-375x200.jpg"
},
"relatedPrograms": []
"programs": {
"relatedPrograms": []
}
},
{
"cardId": "card-id103",
"enrollment": {
"accessExpirationDate": null,
"canUpgrade": false,
@@ -2333,54 +2272,51 @@
"isVerified": false,
"lastEnrolled": null
},
"grades": null,
"certificates": null,
"gradeData": null,
"certificate": null,
"courseRun": null,
"entitlement": {
"uuid": "entitlement-course-uuid-13",
"availableSessions": [],
"canViewCourse": false,
"changeDeadline": "11/11/2000",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": true,
"isFulfilled": false,
"isRefundable": true
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"courseNumber": "course-number103",
"title": "Course Name 103",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg"
"courseName": "Course Name 103",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id104",
"enrollment": {
"accessExpirationDate": null,
"canUpgrade": false,
@@ -2398,54 +2334,51 @@
"isVerified": false,
"lastEnrolled": null
},
"grades": null,
"certificates": null,
"gradeData": null,
"certificate": null,
"courseRun": null,
"entitlement": {
"uuid": "entitlement-course-uuid-14",
"availableSessions": [],
"canViewCourse": false,
"changeDeadline": "11/11/2000",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": true,
"isFulfilled": false,
"isRefundable": true
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"courseNumber": "course-number104",
"title": "Course Name 104",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg"
"courseName": "Course Name 104",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id105",
"enrollment": {
"accessExpirationDate": null,
"canUpgrade": false,
@@ -2463,8 +2396,8 @@
"isVerified": false,
"lastEnrolled": null
},
"grades": null,
"certificates": null,
"gradeData": null,
"certificate": null,
"courseRun": {
"isStarted": false,
"isArchived": false,
@@ -2476,54 +2409,50 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number15-course-id15",
"lastEnrolled": "2022-09-06T15:20:57.513Z"
"courseId": "course-number15-course-id15"
},
"entitlement": {
"uuid": "entitlement-course-uuid-15",
"availableSessions": [],
"canViewCourse": false,
"changeDeadline": "11/11/2000",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": true,
"isFulfilled": false,
"isRefundable": true
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"courseNumber": "course-number105",
"title": "Course Name 105",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg"
"courseName": "Course Name 105",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id106",
"enrollment": {
"accessExpirationDate": null,
"canUpgrade": false,
@@ -2541,54 +2470,51 @@
"isVerified": false,
"lastEnrolled": null
},
"grades": null,
"certificates": null,
"gradeData": null,
"certificate": null,
"courseRun": null,
"entitlement": {
"uuid": "entitlement-course-uuid-16",
"availableSessions": [],
"canViewCourse": false,
"changeDeadline": "11/11/2000",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": true,
"isFulfilled": false,
"isRefundable": true
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"courseNumber": "course-number106",
"title": "Course Name 106",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg"
"courseName": "Course Name 106",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
},
{
"cardId": "card-id107",
"enrollment": {
"accessExpirationDate": null,
"canUpgrade": false,
@@ -2606,8 +2532,8 @@
"isVerified": false,
"lastEnrolled": null
},
"grades": null,
"certificates": null,
"gradeData": null,
"certificate": null,
"courseRun": {
"isStarted": false,
"isArchived": false,
@@ -2619,51 +2545,48 @@
"progressUrl": "edx.com/courses/my-course-url/progress",
"unenrollUrl": "edx.com/courses/my-course-url/unenroll",
"resumeUrl": "edx.com/courses/my-course-url/resume",
"courseId": "course-number15-course-id15",
"lastEnrolled": "2022-09-06T15:20:57.513Z"
"courseId": "course-number15-course-id15"
},
"entitlement": {
"uuid": "entitlement-course-uuid-17",
"availableSessions": [],
"canViewCourse": false,
"changeDeadline": "11/11/2000",
"enrollmentUrl": "/entitlement-enrollment",
"isEntitlement": true,
"isExpired": true,
"isFulfilled": false,
"isRefundable": true
},
"provider": {
"name": "edX Course Provider",
"website": "www.edx.com",
"email": "support@edx.com"
"courseProvider": {
"name": "edX Course Provider"
},
"course": {
"courseNumber": "course-number107",
"title": "Course Name 107",
"bannerUrl": "https://edx-cdn.org/v3/prod/logo.svg"
"courseName": "Course Name 107",
"bannerImgSrc": "https://edx-cdn.org/v3/prod/logo.svg"
},
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
"programs": {
"relatedPrograms": [
{
"provider": "HarvardX",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/course/image/327c8e4f-315a-417b-9857-046dfc90c243-677b97464958.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/44022f13-20df-4666-9111-cede3e5dc5b6-770e00385e7e.png",
"title": "Relativity in Modern Mechanics",
"programUrl": "www.edx/my-program",
"programType": "MicroBachelors Program",
"numberOfCourses": 3
},
{
"provider": "University of Maryland",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Pandering for Modern Professionals",
"programUrl": "www.edx/my-program-2",
"programType": "MicroBachelors Program",
"programTypeUrl": "www.edx/my-program-type",
"numberOfCourses": 3
}
]
}
}
],
"emailConfirmation": {
@@ -2681,27 +2604,27 @@
},
"suggestedCourses": [
{
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Suggested course 1",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"logoImgSrc": null,
"courseName": "Suggested course 1",
"courseUrl": "www.edx/suggested-course"
},
{
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Suggested course 2",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"logoImgSrc": null,
"courseName": "Suggested course 2",
"courseUrl": "www.edx/suggested-course"
},
{
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Suggested course 3",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"logoImgSrc": null,
"courseName": "Suggested course 3",
"courseUrl": "www.edx/suggested-course"
},
{
"bannerUrl": "https://prod-discovery.edx-cdn.org/media/programs/banner_images/9a310b98-8f27-439e-be85-12d6460245c9-f2efca129273.small.jpg",
"logoUrl": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"title": "Suggested course 4",
"bannerImgSrc": "https://prod-discovery.edx-cdn.org/organization/certificate_logos/b9dc96da-b3fc-45a6-b6b7-b8e12eb79335-ac60112330e3.png",
"logoImgSrc": null,
"courseName": "Suggested course 4",
"courseUrl": "www.edx/suggested-course"
}
]

View File

@@ -111,7 +111,10 @@ class CourseRunSerializer(serializers.Serializer):
return f"{ecommerce_payment_page}?sku={verified_sku}"
def get_resumeUrl(self, instance):
return self.context.get("resume_course_urls", {}).get(instance.course_id)
resumeUrl = self.context.get("resume_course_urls", {}).get(instance.course_id)
# Return None if missing or empty string
return resumeUrl if bool(resumeUrl) else None
class CoursewareAccessSerializer(serializers.Serializer):
@@ -300,6 +303,7 @@ class AvailableEntitlementSessionSerializer(serializers.Serializer):
class EntitlementSerializer(serializers.Serializer):
"""Entitlement info"""
requires_context = True
availableSessions = serializers.SerializerMethodField()
@@ -341,8 +345,8 @@ class EntitlementSerializer(serializers.Serializer):
class RelatedProgramSerializer(serializers.Serializer):
"""Related programs information"""
bannerUrl = serializers.URLField(source="banner_image.small.url")
logoUrl = serializers.SerializerMethodField()
bannerImgSrc = serializers.URLField(source="banner_image.small.url")
logoImgSrc = serializers.SerializerMethodField()
numberOfCourses = serializers.SerializerMethodField()
programType = serializers.CharField(source="type")
programUrl = serializers.SerializerMethodField()
@@ -352,7 +356,7 @@ class RelatedProgramSerializer(serializers.Serializer):
def get_numberOfCourses(self, instance):
return len(instance["courses"])
def get_logoUrl(self, instance):
def get_logoImgSrc(self, instance):
return (
instance["authoring_organizations"][0].get("logo_image_url")
if instance.get("authoring_organizations")
@@ -422,8 +426,10 @@ class LearnerEnrollmentSerializer(serializers.Serializer):
"""
If this enrollment is part of a program, include information about the program and related programs
"""
programs = self.context['programs'].get(str(instance.course_id), [])
return ProgramsSerializer({"relatedPrograms": programs}, context=self.context).data
programs = self.context["programs"].get(str(instance.course_id), [])
return ProgramsSerializer(
{"relatedPrograms": programs}, context=self.context
).data
class UnfulfilledEntitlementSerializer(serializers.Serializer):
@@ -437,21 +443,21 @@ class UnfulfilledEntitlementSerializer(serializers.Serializer):
# This is the static constant data returned as the 'enrollment' key for all unfulfilled enrollments.
STATIC_ENTITLEMENT_ENROLLMENT_DATA = {
'accessExpirationDate': None,
'isAudit': False,
'hasStarted': False,
'coursewareAccess': {
"accessExpirationDate": None,
"isAudit": False,
"hasStarted": False,
"coursewareAccess": {
"hasUnmetPrerequisites": False,
"isTooEarly": False,
"isStaff": False,
},
'isVerified': False,
'canUpgrade': False,
'isAuditAccessExpired': False,
'isEmailEnabled': False,
'hasOptedOutOfEmail': False,
'lastEnrolled': None,
'isEnrolled': False,
"isVerified": False,
"canUpgrade": False,
"isAuditAccessExpired": False,
"isEmailEnabled": False,
"hasOptedOutOfEmail": False,
"lastEnrolled": None,
"isEnrolled": False,
}
class _PseudoSessionCourseSerializer(serializers.Serializer):
@@ -507,12 +513,12 @@ class UnfulfilledEntitlementSerializer(serializers.Serializer):
class SuggestedCourseSerializer(serializers.Serializer):
"""Serializer for a suggested course"""
"""Serializer for a suggested course from recommendation engine"""
bannerUrl = serializers.URLField()
logoUrl = serializers.URLField()
title = serializers.CharField()
courseUrl = serializers.URLField()
bannerImgSrc = serializers.URLField(source="logo_image_url")
logoImgSrc = serializers.URLField(allow_null=True)
courseName = serializers.CharField(source="title")
courseUrl = serializers.URLField(source="marketing_url")
class EmailConfirmationSerializer(serializers.Serializer):

View File

@@ -20,7 +20,10 @@ from common.djangoapps.student.tests.factories import (
CourseEnrollmentFactory,
UserFactory,
)
from openedx.core.djangoapps.catalog.tests.factories import CourseRunFactory as CatalogCourseRunFactory, ProgramFactory
from openedx.core.djangoapps.catalog.tests.factories import (
CourseRunFactory as CatalogCourseRunFactory,
ProgramFactory,
)
from openedx.core.djangoapps.content.course_overviews.tests.factories import (
CourseOverviewFactory,
)
@@ -173,26 +176,41 @@ class TestCourseSerializer(LearnerDashboardBaseTest):
class TestCourseRunSerializer(LearnerDashboardBaseTest):
"""Tests for the CourseRunSerializer"""
def test_with_data(self):
input_data = self.create_test_enrollment()
input_context = {
"resume_course_urls": {input_data.course.id: random_url()},
def create_test_context(self, course_id):
return {
"resume_course_urls": {course_id: random_url()},
"ecommerce_payment_page": random_url(),
"course_mode_info": {
input_data.course.id: {
course_id: {
"verified_sku": str(uuid4()),
"days_for_upsell": randint(0, 14),
}
},
}
serializer = CourseRunSerializer(input_data, context=input_context)
output = serializer.data
def test_with_data(self):
input_data = self.create_test_enrollment()
input_context = self.create_test_context(input_data.course.id)
# Serializaiton set up so all fields will have values to make testing easy
for key in output:
assert output[key] is not None
output_data = CourseRunSerializer(input_data, context=input_context).data
# Serialization set up so all fields will have values to make testing easy
for key in output_data:
assert output_data[key] is not None
def test_missing_resume_url(self):
# Given a course run
input_data = self.create_test_enrollment()
input_context = self.create_test_context(input_data.course.id)
# ... where a user hasn't started
input_context["resume_course_urls"][input_data.course.id] = ""
# When I serialize
output_data = CourseRunSerializer(input_data, context=input_context).data
# Then the resumeUrl is None
self.assertIsNone(output_data["resumeUrl"])
@ddt.ddt
@@ -685,9 +703,7 @@ class TestProgramsSerializer(TestCase):
def generate_test_programs_info(cls):
"""Util to generate test programs info"""
return {
"relatedPrograms": [
cls.generate_test_related_program() for _ in range(3)
],
"relatedPrograms": [cls.generate_test_related_program() for _ in range(3)],
}
def test_related_program_serializer(self):
@@ -697,17 +713,23 @@ class TestProgramsSerializer(TestCase):
# When I serialize it
output_data = RelatedProgramSerializer(input_data).data
# Then the output should map with the input
self.assertEqual(output_data, {
'bannerUrl': input_data['banner_image']['small']['url'],
'logoUrl': input_data['authoring_organizations'][0]['logo_image_url'],
'numberOfCourses': len(input_data['courses']),
'programType': input_data['type'],
'programUrl': settings.LMS_ROOT_URL + reverse(
'program_details_view', kwargs={'program_uuid': input_data['uuid']}
),
'provider': input_data['authoring_organizations'][0]['name'],
'title': input_data['title'],
})
self.assertEqual(
output_data,
{
"bannerImgSrc": input_data["banner_image"]["small"]["url"],
"logoImgSrc": input_data["authoring_organizations"][0][
"logo_image_url"
],
"numberOfCourses": len(input_data["courses"]),
"programType": input_data["type"],
"programUrl": settings.LMS_ROOT_URL
+ reverse(
"program_details_view", kwargs={"program_uuid": input_data["uuid"]}
),
"provider": input_data["authoring_organizations"][0]["name"],
"title": input_data["title"],
},
)
def test_programs_serializer(self):
"""Test the ProgramsSerializer"""
@@ -718,11 +740,16 @@ class TestProgramsSerializer(TestCase):
output_data = ProgramsSerializer(input_data).data
# Test the output
assert output_data['relatedPrograms']
assert len(output_data['relatedPrograms']) == len(input_data['relatedPrograms'])
self.assertEqual(output_data, {
"relatedPrograms": RelatedProgramSerializer(input_data["relatedPrograms"], many=True).data
})
assert output_data["relatedPrograms"]
assert len(output_data["relatedPrograms"]) == len(input_data["relatedPrograms"])
self.assertEqual(
output_data,
{
"relatedPrograms": RelatedProgramSerializer(
input_data["relatedPrograms"], many=True
).data
},
)
def test_empty_sessions(self):
input_data = {"relatedPrograms": []}
@@ -876,42 +903,41 @@ class TestSuggestedCourseSerializer(TestCase):
"""High-level tests for SuggestedCourseSerializer"""
@classmethod
def generate_test_suggested_courses(cls):
return {
"bannerUrl": random_url(),
"logoUrl": random_url(),
"title": f"{uuid4()}",
"courseUrl": random_url(),
def mock_suggested_courses(cls, courses_count=5):
"""
Sample return data from general recommendations
"""
suggested_courses = {
"courses": [],
"is_personalized_recommendation": False,
}
def test_structure(self):
"""Test that nothing breaks and the output fields look correct"""
input_data = self.generate_test_suggested_courses()
for i in range(courses_count):
suggested_courses["courses"].append(
{
"course_key": uuid4(),
"logo_image_url": random_url(),
"marketing_url": random_url(),
"title": str(uuid4()),
},
)
output_data = SuggestedCourseSerializer(input_data).data
expected_keys = [
"bannerUrl",
"logoUrl",
"title",
"courseUrl",
]
assert output_data.keys() == set(expected_keys)
return suggested_courses
def test_happy_path(self):
"""Test that data serializes correctly"""
input_data = self.generate_test_suggested_courses()
input_data = self.mock_suggested_courses(courses_count=1)["courses"][0]
output_data = SuggestedCourseSerializer(input_data).data
self.assertDictEqual(
output_data,
{
"bannerUrl": input_data["bannerUrl"],
"logoUrl": input_data["logoUrl"],
"title": input_data["title"],
"courseUrl": input_data["courseUrl"],
"bannerImgSrc": input_data["logo_image_url"],
"logoImgSrc": None,
"courseName": input_data["title"],
"courseUrl": input_data["marketing_url"],
},
)
@@ -1005,7 +1031,7 @@ class TestLearnerDashboardSerializer(LearnerDashboardBaseTest):
enrollments=None,
enrollments_with_entitlements=None,
unfulfilled_entitlements=None,
has_programs=False
has_programs=False,
):
"""
Given enrollments and entitlements, generate a matching serializer context
@@ -1055,11 +1081,14 @@ class TestLearnerDashboardSerializer(LearnerDashboardBaseTest):
course_overview = CourseOverviewFactory.create(id=course_key)
pseudo_session_course_overviews[course_key] = course_overview
programs = {
str(enrollment.course.id): ProgramFactory.create_batch(3)
for enrollment in enrollments
} if has_programs else {}
programs = (
{
str(enrollment.course.id): ProgramFactory.create_batch(3)
for enrollment in enrollments
}
if has_programs
else {}
)
input_context = {
"resume_course_urls": resume_course_urls,
@@ -1149,17 +1178,37 @@ class TestLearnerDashboardSerializer(LearnerDashboardBaseTest):
assert len(courses) == 3
self._assert_all_keys_equal(courses)
# Non-entitlement enrollment should have no entitlement info
assert not courses[0]['entitlement']
assert not courses[0]["entitlement"]
# Fulfilled and Unfulfilled entitlement should have identical keys
fulfilled_entitlement = courses[1]['entitlement']
unfulfilled_entitlement = courses[2]['entitlement']
fulfilled_entitlement = courses[1]["entitlement"]
unfulfilled_entitlement = courses[2]["entitlement"]
assert fulfilled_entitlement
assert unfulfilled_entitlement
assert fulfilled_entitlement.keys() == unfulfilled_entitlement.keys()
# test programs
assert courses[0]['programs']
assert len(courses[0]['programs']['relatedPrograms']) == 3
assert courses[0]["programs"]
assert len(courses[0]["programs"]["relatedPrograms"]) == 3
def test_suggested_courses(self):
suggested_courses = TestSuggestedCourseSerializer.mock_suggested_courses()[
"courses"
]
input_data = {
"emailConfirmation": None,
"enterpriseDashboard": None,
"platformSettings": None,
"enrollments": [],
"unfulfilledEntitlements": [],
"suggestedCourses": suggested_courses,
}
output_data = LearnerDashboardSerializer(input_data).data
output_suggested_courses = output_data.pop("suggestedCourses")
self.assertEqual(len(suggested_courses), len(output_suggested_courses))
@mock.patch(
"lms.djangoapps.learner_home.serializers.SuggestedCourseSerializer.to_representation"

View File

@@ -27,11 +27,15 @@ from lms.djangoapps.learner_home.views import (
get_email_settings_info,
get_enrollments,
get_platform_settings,
get_suggested_courses,
get_user_account_confirmation_info,
get_entitlements,
)
from lms.djangoapps.learner_home.test_serializers import random_url
from openedx.core.djangoapps.catalog.tests.factories import CourseRunFactory as CatalogCourseRunFactory, ProgramFactory
from openedx.core.djangoapps.catalog.tests.factories import (
CourseRunFactory as CatalogCourseRunFactory,
ProgramFactory,
)
from openedx.core.djangoapps.content.course_overviews.tests.factories import (
CourseOverviewFactory,
)
@@ -41,7 +45,9 @@ from xmodule.modulestore.tests.django_utils import (
SharedModuleStoreTestCase,
)
from xmodule.modulestore.tests.factories import CourseFactory
from openedx.core.djangoapps.catalog.tests.factories import CourseFactory as CatalogCourseFactory
from openedx.core.djangoapps.catalog.tests.factories import (
CourseFactory as CatalogCourseFactory,
)
ENTERPRISE_ENABLED = "ENABLE_ENTERPRISE_INTEGRATION"
@@ -344,6 +350,50 @@ class TestGetEmailSettingsInfo(SharedModuleStoreTestCase):
)
class TestGetSuggestedCourses(SharedModuleStoreTestCase):
"""Tests for get_suggested_courses"""
MOCK_SUGGESTED_COURSES = {
"courses": [
{
"course_key": "HogwartsX+6.00.1x",
"logo_image_url": random_url(),
"marketing_url": random_url(),
"title": "Defense Against the Dark Arts",
},
{
"course_key": "MonstersX+SC101EN",
"logo_image_url": random_url(),
"marketing_url": random_url(),
"title": "Scaring 101",
},
],
"is_personalized_recommendation": False,
}
EMPTY_SUGGESTED_COURSES = {
"courses": [],
"is_personalized_recommendation": False,
}
@patch("django.conf.settings.GENERAL_RECOMMENDATION", MOCK_SUGGESTED_COURSES)
def test_suggested_courses(self):
# Given suggested courses are configured
# When I request suggested courses
return_data = get_suggested_courses()
# Then I return them in the appropriate response
self.assertDictEqual(return_data, self.MOCK_SUGGESTED_COURSES)
def test_no_suggested_courses(self):
# Given suggested courses are not found/configured
# When I request suggested courses
return_data = get_suggested_courses()
# Then I return them in the appropriate response
self.assertDictEqual(return_data, self.EMPTY_SUGGESTED_COURSES)
class TestDashboardView(SharedModuleStoreTestCase, APITestCase):
"""Tests for the dashboard view"""
@@ -383,23 +433,17 @@ class TestDashboardView(SharedModuleStoreTestCase, APITestCase):
program = ProgramFactory(courses=[CatalogCourseFactory(uuid=str(course_uuid))])
enrollment = CourseEnrollmentFactory(
user=self.user,
mode=CourseMode.VERIFIED,
is_active=False
user=self.user, mode=CourseMode.VERIFIED, is_active=False
)
entitlement = CourseEntitlementFactory.create(
user=self.user,
course_uuid=course_uuid,
mode=CourseMode.VERIFIED,
enrollment_course_run=enrollment
enrollment_course_run=enrollment,
)
return (
program,
enrollment,
entitlement
)
return (program, enrollment, entitlement)
@patch.dict(settings.FEATURES, ENTERPRISE_ENABLED=False)
def test_response_structure(self):
@@ -531,7 +575,9 @@ class TestDashboardView(SharedModuleStoreTestCase, APITestCase):
course_uuid = str(uuid4())
course_uuid2 = str(uuid4())
program, enrollment, _ = self._create_course_programs(course_uuid=course_uuid)
program2, enrollment2, _ = self._create_course_programs(course_uuid=course_uuid2)
program2, enrollment2, _ = self._create_course_programs(
course_uuid=course_uuid2
)
data = [
program,

View File

@@ -30,7 +30,9 @@ from lms.djangoapps.learner_home.serializers import LearnerDashboardSerializer
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
from openedx.core.djangoapps.programs.utils import ProgramProgressMeter
from openedx.features.enterprise_support.api import enterprise_customer_from_session_or_learner_data
from openedx.features.enterprise_support.api import (
enterprise_customer_from_session_or_learner_data,
)
def get_platform_settings():
@@ -250,6 +252,19 @@ def get_course_programs(user, course_enrollments, site):
return meter.invert_programs()
def get_suggested_courses():
"""
Currently just returns general recommendations from settings
"""
empty_course_suggestions = {"courses": [], "is_personalized_recommendation": False}
return (
configuration_helpers.get_value(
"GENERAL_RECOMMENDATION", settings.GENERAL_RECOMMENDATION
)
or empty_course_suggestions
)
class InitializeView(RetrieveAPIView): # pylint: disable=unused-argument
"""List of courses a user is enrolled in or entitled to"""
@@ -301,13 +316,16 @@ class InitializeView(RetrieveAPIView): # pylint: disable=unused-argument
# Gather urls for course card resume buttons.
resume_button_urls = get_resume_urls_for_enrollments(user, course_enrollments)
# Get suggested courses
suggested_courses = get_suggested_courses().get("courses", [])
learner_dash_data = {
"emailConfirmation": email_confirmation,
"enterpriseDashboard": enterprise_customer,
"platformSettings": get_platform_settings(),
"enrollments": course_enrollments,
"unfulfilledEntitlements": unfulfilled_entitlements,
"suggestedCourses": [],
"suggestedCourses": suggested_courses,
}
context = {