feat: update subscription enrollment alert (#32414)
This commit is contained in:
@@ -217,7 +217,8 @@ class TestProgramsView(SharedModuleStoreTestCase, ProgramCacheMixin):
|
||||
'uuid': self.program['uuid'],
|
||||
'completed': 0,
|
||||
'in_progress': 0,
|
||||
'not_started': 1
|
||||
'not_started': 1,
|
||||
'all_unenrolled': False,
|
||||
}
|
||||
|
||||
@with_site_configuration(configuration={'COURSE_CATALOG_API_URL': 'foo'})
|
||||
|
||||
@@ -40,7 +40,7 @@ describe('Program Alert List View', () => {
|
||||
|
||||
it('should render no enrollement alert', () => {
|
||||
expect(view.$('.alert:first .alert-heading').text().trim()).toEqual(
|
||||
'Enroll in a Test Program course'
|
||||
'Enroll in a Test Program\'s course'
|
||||
);
|
||||
expect(view.$('.alert:first .alert-message').text().trim()).toEqual(
|
||||
'You have an active subscription to the Test Program program but are not enrolled in any courses. Enroll in a remaining course and enjoy verified access.'
|
||||
|
||||
@@ -39,12 +39,14 @@ describe('Program List Header View', () => {
|
||||
completed: 0,
|
||||
in_progress: 1,
|
||||
not_started: 0,
|
||||
all_unenrolled: false,
|
||||
},
|
||||
{
|
||||
uuid: 'b90d70d5-f981-4508-bdeb-5b792d930c03',
|
||||
completed: 0,
|
||||
in_progress: 0,
|
||||
not_started: 3,
|
||||
all_unenrolled: true,
|
||||
},
|
||||
],
|
||||
isUserB2CSubscriptionsEnabled: true,
|
||||
@@ -79,7 +81,7 @@ describe('Program List Header View', () => {
|
||||
it('should render a program alert', () => {
|
||||
expect(
|
||||
view.$('.js-program-list-alerts .alert .alert-heading').html().trim()
|
||||
).toEqual('Enroll in a Test Program course');
|
||||
).toEqual('Enroll in a Test Program\'s course');
|
||||
expect(
|
||||
view.$('.js-program-list-alerts .alert .alert-message')
|
||||
).toContainHtml(
|
||||
|
||||
@@ -36,7 +36,7 @@ class ProgramAlertListView extends Backbone.View {
|
||||
url,
|
||||
urlText: gettext('View program'),
|
||||
title: StringUtils.interpolate(
|
||||
gettext('Enroll in a {programName} course'),
|
||||
gettext('Enroll in a {programName}\'s course'),
|
||||
{ programName }
|
||||
),
|
||||
message: this.pageType === 'programDetails'
|
||||
|
||||
@@ -217,10 +217,7 @@ class ProgramDetailsView extends Backbone.View {
|
||||
trialEndingAlerts: [],
|
||||
};
|
||||
if (this.subscriptionModel.get('subscriptionState') === 'active') {
|
||||
if (
|
||||
this.courseData.get('in_progress').length === 0 &&
|
||||
this.courseData.get('not_started').length >= 1
|
||||
) {
|
||||
if (this.courseData.get('all_unenrolled')) {
|
||||
alerts.enrollmentAlerts.push({
|
||||
title: this.programModel.get('title'),
|
||||
});
|
||||
|
||||
@@ -58,18 +58,15 @@ class ProgramListHeaderView extends Backbone.View {
|
||||
|
||||
getEnrollmentAlerts() {
|
||||
return this.programAndSubscriptionData
|
||||
.map(({ programData, subscriptionData }) => {
|
||||
const progress = this.context.progressCollection?.findWhere({
|
||||
.map(({ programData, subscriptionData }) =>
|
||||
this.context.progressCollection?.findWhere({
|
||||
uuid: programData.uuid,
|
||||
in_progress: 0,
|
||||
});
|
||||
return (
|
||||
progress?.get('not_started') >= 1 && {
|
||||
title: programData.title,
|
||||
url: programData.detail_url,
|
||||
}
|
||||
);
|
||||
})
|
||||
all_unenrolled: true,
|
||||
}) ? {
|
||||
title: programData.title,
|
||||
url: programData.detail_url,
|
||||
} : null
|
||||
)
|
||||
.filter(Boolean);
|
||||
}
|
||||
|
||||
|
||||
@@ -157,7 +157,11 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
assert meter.engaged_programs == [program]
|
||||
self._assert_progress(
|
||||
meter,
|
||||
ProgressFactory(uuid=program['uuid'], in_progress=1)
|
||||
ProgressFactory(
|
||||
uuid=program['uuid'],
|
||||
in_progress=1,
|
||||
all_unenrolled=False,
|
||||
)
|
||||
)
|
||||
assert not list(meter.completed_programs_with_available_dates.keys())
|
||||
|
||||
@@ -256,6 +260,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
completed=[],
|
||||
in_progress=[program['courses'][0]],
|
||||
not_started=[],
|
||||
all_unenrolled=False,
|
||||
)
|
||||
]
|
||||
|
||||
@@ -292,6 +297,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
completed=[],
|
||||
in_progress=[program['courses'][0]],
|
||||
not_started=[],
|
||||
all_unenrolled=False,
|
||||
)
|
||||
]
|
||||
|
||||
@@ -333,6 +339,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
completed=0,
|
||||
in_progress=1 if offset in [None, 1] else 0,
|
||||
not_started=1 if offset in [-1] else 0,
|
||||
all_unenrolled=False,
|
||||
)
|
||||
]
|
||||
|
||||
@@ -374,7 +381,11 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
|
||||
self._assert_progress(
|
||||
meter,
|
||||
*(ProgressFactory(uuid=program['uuid'], in_progress=1) for program in programs)
|
||||
*(ProgressFactory(
|
||||
uuid=program['uuid'],
|
||||
in_progress=1,
|
||||
all_unenrolled=False,
|
||||
) for program in programs)
|
||||
)
|
||||
assert not list(meter.completed_programs_with_available_dates.keys())
|
||||
|
||||
@@ -442,7 +453,11 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
|
||||
self._assert_progress(
|
||||
meter,
|
||||
*(ProgressFactory(uuid=program['uuid'], in_progress=1) for program in programs)
|
||||
*(ProgressFactory(
|
||||
uuid=program['uuid'],
|
||||
in_progress=1,
|
||||
all_unenrolled=False,
|
||||
) for program in programs)
|
||||
)
|
||||
assert not list(meter.completed_programs_with_available_dates.keys())
|
||||
|
||||
@@ -531,7 +546,12 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
_, program_uuid = data[0], data[0]['uuid']
|
||||
self._assert_progress(
|
||||
meter,
|
||||
ProgressFactory(uuid=program_uuid, in_progress=1, not_started=2)
|
||||
ProgressFactory(
|
||||
uuid=program_uuid,
|
||||
in_progress=1,
|
||||
not_started=2,
|
||||
all_unenrolled=False,
|
||||
)
|
||||
)
|
||||
assert not list(meter.completed_programs_with_available_dates.keys())
|
||||
|
||||
@@ -544,6 +564,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
ProgressFactory(
|
||||
uuid=program_uuid,
|
||||
in_progress=3,
|
||||
all_unenrolled=False,
|
||||
)
|
||||
)
|
||||
assert not list(meter.completed_programs_with_available_dates.keys())
|
||||
@@ -557,6 +578,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
uuid=program_uuid,
|
||||
completed=1,
|
||||
in_progress=2,
|
||||
all_unenrolled=False,
|
||||
)
|
||||
)
|
||||
assert not list(meter.completed_programs_with_available_dates.keys())
|
||||
@@ -571,6 +593,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
uuid=program_uuid,
|
||||
completed=1,
|
||||
in_progress=2,
|
||||
all_unenrolled=False,
|
||||
)
|
||||
)
|
||||
assert not list(meter.completed_programs_with_available_dates.keys())
|
||||
@@ -585,6 +608,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
uuid=program_uuid,
|
||||
completed=2,
|
||||
in_progress=1,
|
||||
all_unenrolled=False,
|
||||
)
|
||||
)
|
||||
assert not list(meter.completed_programs_with_available_dates.keys())
|
||||
@@ -598,6 +622,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
uuid=program_uuid,
|
||||
completed=2,
|
||||
not_started=1,
|
||||
all_unenrolled=False,
|
||||
)
|
||||
)
|
||||
assert list(meter.completed_programs_with_available_dates.keys()) == [program_uuid]
|
||||
@@ -614,6 +639,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
ProgressFactory(
|
||||
uuid=program_uuid,
|
||||
completed=3,
|
||||
all_unenrolled=False,
|
||||
)
|
||||
)
|
||||
assert list(meter.completed_programs_with_available_dates.keys()) == [program_uuid]
|
||||
@@ -641,7 +667,8 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
meter,
|
||||
ProgressFactory(
|
||||
uuid=program_data['uuid'],
|
||||
not_started=1
|
||||
not_started=1,
|
||||
all_unenrolled=False,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -674,7 +701,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
|
||||
program_uuid = program['uuid']
|
||||
self._assert_progress(
|
||||
meter,
|
||||
ProgressFactory(uuid=program_uuid, completed=1)
|
||||
ProgressFactory(uuid=program_uuid, completed=1, all_unenrolled=False)
|
||||
)
|
||||
assert list(meter.completed_programs_with_available_dates.keys()) == [program_uuid]
|
||||
|
||||
|
||||
@@ -352,6 +352,9 @@ class ProgramProgressMeter:
|
||||
'completed': len(completed) if count_only else completed,
|
||||
'in_progress': len(in_progress) if count_only else in_progress,
|
||||
'not_started': len(not_started) if count_only else not_started,
|
||||
'all_unenrolled': all(
|
||||
not self._is_course_enrolled(course) for course in program_copy['courses']
|
||||
),
|
||||
})
|
||||
|
||||
return progress
|
||||
|
||||
Reference in New Issue
Block a user