From 45bff268ae1b9a7589ae589cfba5a4fe563e112e Mon Sep 17 00:00:00 2001 From: Peter Fogg Date: Wed, 30 Dec 2015 11:19:01 -0500 Subject: [PATCH] Allow removing a verification deadline through the Commerce API. ECOM-3268 --- lms/djangoapps/commerce/api/v1/models.py | 3 +-- .../commerce/api/v1/tests/test_views.py | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lms/djangoapps/commerce/api/v1/models.py b/lms/djangoapps/commerce/api/v1/models.py index 6d042fe6f1..a42f9e54fb 100644 --- a/lms/djangoapps/commerce/api/v1/models.py +++ b/lms/djangoapps/commerce/api/v1/models.py @@ -59,8 +59,7 @@ class Course(object): """ Save the CourseMode objects to the database. """ # Override the verification deadline for the course (not the individual modes) - if self.verification_deadline is not None: - VerificationDeadline.set_deadline(self.id, self.verification_deadline, is_explicit=True) + VerificationDeadline.set_deadline(self.id, self.verification_deadline, is_explicit=True) for mode in self.modes: mode.course_id = self.id diff --git a/lms/djangoapps/commerce/api/v1/tests/test_views.py b/lms/djangoapps/commerce/api/v1/tests/test_views.py index 62245bef2a..1a7a762909 100644 --- a/lms/djangoapps/commerce/api/v1/tests/test_views.py +++ b/lms/djangoapps/commerce/api/v1/tests/test_views.py @@ -203,6 +203,29 @@ class CourseRetrieveUpdateViewTests(CourseApiViewTestMixin, ModuleStoreTestCase) self.assertEqual(response.status_code, 200) self.assertEqual(VerificationDeadline.deadline_for_course(self.course.id), verification_deadline) + def test_update_remove_verification_deadline(self): + """ + Verify that verification deadlines can be removed through the API. + """ + verification_deadline = datetime(year=1915, month=5, day=7, tzinfo=pytz.utc) + response, __ = self._get_update_response_and_expected_data(None, verification_deadline) + self.assertEqual(VerificationDeadline.deadline_for_course(self.course.id), verification_deadline) + + verified_mode = CourseMode( + mode_slug=u'verified', + min_price=200, + currency=u'USD', + sku=u'ABC123', + expiration_datetime=None + ) + updated_data = self._serialize_course(self.course, [verified_mode], None) + updated_data['verification_deadline'] = None + + response = self.client.put(self.path, json.dumps(updated_data), content_type=JSON_CONTENT_TYPE) + + self.assertEqual(response.status_code, 200) + self.assertIsNone(VerificationDeadline.deadline_for_course(self.course.id)) + def test_update_overwrite(self): """ Verify that data submitted via PUT overwrites/deletes modes that are not included in the body of the request. """