feat: update subscription enrollment alert (#32414)

This commit is contained in:
Nawfal Ahmed
2023-06-12 18:07:43 +05:00
committed by GitHub
parent 2002dcb7bd
commit 6a5c1bbf44
8 changed files with 52 additions and 25 deletions

View File

@@ -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'})

View File

@@ -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.'

View File

@@ -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(

View File

@@ -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'

View File

@@ -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'),
});

View File

@@ -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);
}

View File

@@ -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]

View File

@@ -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