-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: unenrolled defaults are now not enrollable #2301
Conversation
61bb513
to
c9ad71e
Compare
@ddt.data( | ||
{'run_is_enrollable': False, 'unenrollment_exists': False}, | ||
{'run_is_enrollable': True, 'unenrollment_exists': True}, | ||
) | ||
@mock.patch('enterprise.content_metadata.api.EnterpriseCatalogApiClient') | ||
@mock.patch('enterprise.models.utils.get_best_mode_from_course_key') | ||
@mock.patch.object(EnterpriseCourseEnrollment, 'course_enrollment', new_callable=mock.PropertyMock) | ||
@ddt.unpack | ||
def test_default_enrollment_intentions_learner_status_content_not_enrollable( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the only changed test, everything else has just been refactored into this new file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good call to start breaking up the giant test_views
file :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A couple small nits, with a broader sanity check question about the logic considering unenrolled
for audit enrollments.
@@ -211,6 +211,12 @@ def _partition_default_enrollment_intentions_by_enrollment_status( | |||
already_enrolled.append((intention, non_audit_enrollment)) | |||
continue | |||
|
|||
if non_audit_enrollment and non_audit_enrollment.unenrolled: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[sanity check] If the existing enrollment is audit (vs. the non_audit_enrollment
here), the learners unenrolls, and there's non-audit modes that exist, would we also want to prevent automatic re-enrollment, too?
For example, would the conditions below the NOTE
comment also need to take into account audit_enrollment.unenrolled
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought about that but decided against it, I can leave a comment in the code. My reasoning is that default enrollments should be "exactly once" per (user, enterprise), if possible. If they enrolled in audit and unenrolled, it means they likely never had a default intention realized for them. This isn't a strongly-held position though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If they enrolled in audit and unenrolled, it means they likely never had a default intention realized for them.
Ah yeah, this probably represents the source of most audit enrollments. The exception would be for courses that are audit-only, which likely rarely happens in production; it does happen somewhat frequently on stage, though we shouldn't optimize for bad stage data 😉
Let's leave it as is for now, with a comment!
@ddt.data( | ||
{'run_is_enrollable': False, 'unenrollment_exists': False}, | ||
{'run_is_enrollable': True, 'unenrollment_exists': True}, | ||
) | ||
@mock.patch('enterprise.content_metadata.api.EnterpriseCatalogApiClient') | ||
@mock.patch('enterprise.models.utils.get_best_mode_from_course_key') | ||
@mock.patch.object(EnterpriseCourseEnrollment, 'course_enrollment', new_callable=mock.PropertyMock) | ||
@ddt.unpack | ||
def test_default_enrollment_intentions_learner_status_content_not_enrollable( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good call to start breaking up the giant test_views
file :)
The default enrollment ``learner_status`` view now considers intended courses from which the requested user has unenrolled as no-longer realizable. ENT-9839
c9ad71e
to
ccd4dc3
Compare
The default enrollment
learner_status
view now considers intended courses from which the requested user has unenrolled as no-longer realizable.ENT-9839
Merge checklist:
requirements/*.txt
files)base.in
if needed in production but edx-platform doesn't install ittest-master.in
if edx-platform pins it, with a matching versionmake upgrade && make requirements
have been run to regenerate requirementsmake static
has been run to update webpack bundling if any static content was updated./manage.py makemigrations
has been run./manage.py lms makemigrations
in the shell.Post merge:
(so basically once your build finishes, after maybe a minute you should see the new version in PyPi automatically (on refresh))
make upgrade
in edx-platform will look for the latest version in PyPi.