Django-python- TestCase - транзакции никогда не должны иметь метку времени в будущем

Я работаю над платежной системой, которая регистрирует транзакции и временные метки. Я хотел бы сделать тест, чтобы убедиться, что транзакции совершаются только на прошлую дату - не должно быть возможности иметь транзакцию с будущей датой.

models.py

 20  class Ledger(models.Model):
 19     account     = models.ForeignKey(Account, on_delete=models.PROTECT)
 18     transaction = models.ForeignKey(UID, on_delete=models.PROTECT)
 17     amount      = models.DecimalField(max_digits=10, decimal_places=2)
 16     timestamp   = models.DateTimeField(auto_now_add=True, db_index=True)
 15     text        = models.TextField()
 14
 13     @classmethod
 12     def transfer(cls, amount, debit_account, debit_text, credit_account, credit_text,                   is_loan=False) -> int:
 11         assert amount >= 0, 'Negative amount not allowed for transfer.'
 10         with transaction.atomic():
  9             if debit_account.balance >= amount or is_loan:
  8                 uid = UID.uid
  7                 cls(amount=-amount, transaction=uid, account=debit_account, text=debit_text).save()
  6                 cls(amount=amount, transaction=uid, account=credit_account, text=credit_text).save()
  5             else:
  4                 raise InsufficientFunds
  3         return uid
  2
  1     def __str__(self):
122         return f'{self.amount} :: {self.transaction} :: {self.timestamp} :: {self.account} :: {self.    text}'

Честно говоря, я даже не знаю, с чего начать тестирование этого класса, потому что тестирование для меня очень ново. Я протестировал некоторые вещи, которые я видел в Интернете, близкие к нижеприведенным, но не могу увидеть, что что-то происходит. Есть ли в этом какой-то смысл? Может быть, есть что-то, что имеет больше смысла тестировать здесь... Предложения более чем приветствуются!

tests.py

 class LedgerModelTestCase(TestCase):
        # def setUp(self):
  1     # no data to test yet
  2     def transfer_completed(self):
  3         time = timezone.now() + datetime.timedelta(days=30)
  4         print(time)
  5         future_transfer = Ledger(timestamp=time)
  6         print(future_transfer)
  7         self.assertIs(future_transfer.was_published_recently(), False)
  8
Вернуться на верх