-
Notifications
You must be signed in to change notification settings - Fork 171
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8be6461
commit e540265
Showing
2 changed files
with
81 additions
and
61 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -960,53 +960,81 @@ def test_reviewed_with_go_live_date(self, when, published, mock_email): | |
assert mock_email.call_count == 1 | ||
|
||
@ddt.data( | ||
(None, False), | ||
(datetime.datetime.now(pytz.UTC) + datetime.timedelta(days=10), False), | ||
(datetime.datetime.now(pytz.UTC) - datetime.timedelta(days=10), True), | ||
datetime.datetime.now(pytz.UTC) - datetime.timedelta(days=10), | ||
datetime.datetime.now(pytz.UTC) - datetime.timedelta(days=20), | ||
) | ||
@ddt.unpack | ||
@mock.patch('course_discovery.apps.course_metadata.emails.send_email_for_reviewed') | ||
@mock.patch('course_discovery.apps.course_metadata.emails.send_email_for_course_url') | ||
def test_reviewed_with_go_live_date_along_with_watchers_email( | ||
self, when, published, mock_course_url_email, mock_email | ||
def test_reviewed_with_go_live_date_along_with_watchers_email_when_course_is_published( | ||
self, when, mock_course_url_email, mock_email | ||
): | ||
""" | ||
Test that watchers are emailed when a course is reviewed and has a go live date | ||
Test that watchers are emailed when a course is published | ||
""" | ||
draft = factories.CourseRunFactory( | ||
draft_course_run = factories.CourseRunFactory( | ||
draft=True, | ||
go_live_date=when, | ||
announcement=None, | ||
) | ||
end = when + datetime.timedelta(days=50) if when else None | ||
if end: # Both end and enrollment_end need to be in the future or else runs will be set to unpublished | ||
draft.end = end | ||
draft.enrollment_end = end | ||
draft.course.draft = True | ||
draft.course.watchers = [ | ||
draft_course_run.end = end | ||
draft_course_run.enrollment_end = end | ||
draft_course_run.course.draft = True | ||
draft_course_run.course.watchers = [ | ||
'[email protected]', | ||
] | ||
draft.course.save() | ||
draft_course_run.course.save() | ||
|
||
# force this prop to be cached, to catch any errors if we assume .official_version is valid after creation | ||
assert draft.official_version is None | ||
assert draft_course_run.official_version is None | ||
|
||
draft.status = CourseRunStatus.Reviewed | ||
draft.save() | ||
draft.refresh_from_db() | ||
official_version = CourseRun.objects.get(key=draft.key) | ||
draft_course_run.status = CourseRunStatus.Reviewed | ||
draft_course_run.save() | ||
draft_course_run.refresh_from_db() | ||
official_version = CourseRun.objects.get(key=draft_course_run.key) | ||
|
||
for run in [draft, official_version]: | ||
if published: | ||
assert run.status == CourseRunStatus.Published | ||
assert run.announcement is not None | ||
assert mock_course_url_email.call_count == 1 | ||
assert mock_email.call_count == 0 | ||
else: | ||
assert run.status == CourseRunStatus.Reviewed | ||
assert run.announcement is None | ||
assert mock_email.call_count == 1 | ||
assert mock_course_url_email.call_count == 1 | ||
for run in [draft_course_run, official_version]: | ||
assert run.status == CourseRunStatus.Published | ||
assert run.announcement is not None | ||
assert mock_course_url_email.call_count == 1 | ||
assert mock_email.call_count == 0 | ||
|
||
@ddt.data(None, datetime.datetime.now(pytz.UTC) + datetime.timedelta(days=10)) | ||
@mock.patch('course_discovery.apps.course_metadata.emails.send_email_for_reviewed') | ||
@mock.patch('course_discovery.apps.course_metadata.emails.send_email_for_course_url') | ||
def test_reviewed_with_go_live_date_along_with_watchers_email_when_course_run_is_scheduled( | ||
self, when, mock_course_url_email, mock_email | ||
): | ||
""" | ||
Test that watchers are emailed when a course is reviewed | ||
""" | ||
draft_course_run = factories.CourseRunFactory( | ||
draft=True, | ||
go_live_date=when, | ||
announcement=None, | ||
) | ||
end = when + datetime.timedelta(days=50) if when else None | ||
if end: # Both end and enrollment_end need to be in the future or else runs will be set to unpublished | ||
draft_course_run.end = end | ||
draft_course_run.enrollment_end = end | ||
draft_course_run.course.draft = True | ||
draft_course_run.course.watchers = [ | ||
'[email protected]', | ||
] | ||
draft_course_run.course.save() | ||
|
||
assert draft_course_run.official_version is None | ||
|
||
draft_course_run.status = CourseRunStatus.Reviewed | ||
draft_course_run.save() | ||
draft_course_run.refresh_from_db() | ||
official_version = CourseRun.objects.get(key=draft_course_run.key) | ||
|
||
for run in [draft_course_run, official_version]: | ||
assert run.status == CourseRunStatus.Reviewed | ||
assert run.announcement is None | ||
assert mock_email.call_count == 1 | ||
assert mock_course_url_email.call_count == 1 | ||
|
||
def test_publish_ignores_draft_input(self): | ||
draft = factories.CourseRunFactory(status=CourseRunStatus.Unpublished, draft=True) | ||
|