From eadf3650a7bce4d76320e429d026f962f3fbdd9b Mon Sep 17 00:00:00 2001 From: Michael Youngstrom Date: Fri, 24 Aug 2018 12:53:54 -0400 Subject: [PATCH] Switch where we create the mock --- .../entitlements/tests/test_tasks.py | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/common/djangoapps/entitlements/tests/test_tasks.py b/common/djangoapps/entitlements/tests/test_tasks.py index aad5c618ba..da324fdaee 100644 --- a/common/djangoapps/entitlements/tests/test_tasks.py +++ b/common/djangoapps/entitlements/tests/test_tasks.py @@ -27,23 +27,26 @@ def boom(): @skip_unless_lms -@mock.patch('entitlements.models.CourseEntitlement.expired_at_datetime', new_callable=mock.PropertyMock) class TestExpireOldEntitlementsTask(TestCase): """ Tests for the 'expire_old_entitlements' method. """ - def test_checks_expiration(self, mock_datetime): + def test_checks_expiration(self): """ Test that we actually do check expiration on each entitlement (happy path) """ make_entitlement() make_entitlement() - tasks.expire_old_entitlements.delay(1, 3).get() + with mock.patch( + 'entitlements.models.CourseEntitlement.expired_at_datetime', + new_callable=mock.PropertyMock + ) as mock_datetime: + tasks.expire_old_entitlements.delay(1, 3).get() self.assertEqual(mock_datetime.call_count, 2) - def test_only_unexpired(self, mock_datetime): + def test_only_unexpired(self): """ Verify that only unexpired entitlements are included """ @@ -51,21 +54,28 @@ class TestExpireOldEntitlementsTask(TestCase): make_entitlement(expired=True) make_entitlement() - # Run expiration - tasks.expire_old_entitlements.delay(1, 3).get() + with mock.patch( + 'entitlements.models.CourseEntitlement.expired_at_datetime', + new_callable=mock.PropertyMock + ) as mock_datetime: + tasks.expire_old_entitlements.delay(1, 3).get() # Make sure only the unexpired one gets used self.assertEqual(mock_datetime.call_count, 1) - def test_retry(self, mock_datetime): + def test_retry(self): """ Test that we retry when an exception occurs while checking old entitlements. """ - mock_datetime.side_effect = boom - make_entitlement() - task = tasks.expire_old_entitlements.delay(1, 2) + + with mock.patch( + 'entitlements.models.CourseEntitlement.expired_at_datetime', + new_callable=mock.PropertyMock, + side_effect=boom + ) as mock_datetime: + task = tasks.expire_old_entitlements.delay(1, 2) self.assertRaises(Exception, task.get) self.assertEqual(mock_datetime.call_count, tasks.MAX_RETRIES + 1)