def test_expiry(self): self.add_project() # Paid schedule_removal() notify_expired() perform_removal() billing_alert() self.assertEqual(len(mail.outbox), 0) self.refresh_from_db() self.assertIsNone(self.billing.removal) self.assertEqual(self.billing.state, Billing.STATE_ACTIVE) self.assertEqual(self.billing.projects.count(), 1) # Not paid self.invoice.start -= timedelta(days=14) self.invoice.end -= timedelta(days=14) self.invoice.save() schedule_removal() notify_expired() perform_removal() billing_alert() self.assertEqual(len(mail.outbox), 1) self.refresh_from_db() self.assertIsNone(self.billing.removal) self.assertEqual(self.billing.state, Billing.STATE_ACTIVE) self.assertEqual(self.billing.projects.count(), 1) self.assertEqual(mail.outbox.pop().subject, "Your billing plan has expired") # Not paid for long self.invoice.start -= timedelta(days=30) self.invoice.end -= timedelta(days=30) self.invoice.save() schedule_removal() notify_expired() perform_removal() billing_alert() self.assertEqual(len(mail.outbox), 1) self.refresh_from_db() self.assertIsNotNone(self.billing.removal) self.assertEqual(self.billing.state, Billing.STATE_ACTIVE) self.assertEqual(self.billing.projects.count(), 1) self.assertEqual( mail.outbox.pop().subject, "Your translation project is scheduled for removal", ) # Final removal self.billing.removal = timezone.now() - timedelta(days=30) self.billing.save() perform_removal() self.refresh_from_db() self.assertEqual(self.billing.state, Billing.STATE_TERMINATED) self.assertEqual(self.billing.projects.count(), 0) self.assertEqual(len(mail.outbox), 1) self.assertEqual( mail.outbox.pop().subject, "Your translation project was removed" )
def test_expiry(self): self.add_project() # Paid schedule_removal() notify_expired() perform_removal() billing_alert() self.assertEqual(len(mail.outbox), 0) self.billing.refresh_from_db() self.assertIsNone(self.billing.removal) self.assertEqual(self.billing.state, Billing.STATE_ACTIVE) self.assertEqual(self.billing.projects.count(), 1) # Not paid self.invoice.start -= timedelta(days=14) self.invoice.end -= timedelta(days=14) self.invoice.save() schedule_removal() notify_expired() perform_removal() billing_alert() self.assertEqual(len(mail.outbox), 1) self.billing.refresh_from_db() self.assertIsNone(self.billing.removal) self.assertEqual(self.billing.state, Billing.STATE_ACTIVE) self.assertEqual(self.billing.projects.count(), 1) self.assertEqual( mail.outbox.pop().subject, 'Your billing plan has expired' ) # Not paid for long self.invoice.start -= timedelta(days=30) self.invoice.end -= timedelta(days=30) self.invoice.save() schedule_removal() notify_expired() perform_removal() billing_alert() self.assertEqual(len(mail.outbox), 1) self.billing.refresh_from_db() self.assertIsNotNone(self.billing.removal) self.assertEqual(self.billing.state, Billing.STATE_ACTIVE) self.assertEqual(self.billing.projects.count(), 1) self.assertEqual( mail.outbox.pop().subject, 'Your translation project is scheduled for removal' ) # Final removal self.billing.removal = timezone.now() - timedelta(days=30) self.billing.save() perform_removal() self.billing.refresh_from_db() self.assertEqual(self.billing.state, Billing.STATE_TERMINATED) self.assertEqual(self.billing.projects.count(), 0) self.assertEqual(len(mail.outbox), 1) self.assertEqual( mail.outbox.pop().subject, 'Your translation project was removed' )