def test_delete_bankaccount(self): bankaccount = BankAccountFactory() BankTransactionSchedulerFactory.create_batch(5) bankaccount_pk = bankaccount.pk bankaccount.delete() self.assertEqual( BankTransactionScheduler.objects.filter(bankaccount__pk=bankaccount_pk).count(), 0, )
def test_delete_bankaccount(self): bankaccount = BankAccountFactory() tag = BankTransactionTagFactory() BankTransactionFactory(bankaccount=bankaccount, tag=tag) pk = bankaccount.pk bankaccount.delete() self.assertEqual(BankTransaction.objects.filter(bankaccount__pk=pk).count(), 0) # Should not be deleted. tag.refresh_from_db()
def test_delete_bankaccount(self): bankaccount = BankAccountFactory() BankTransactionSchedulerFactory.create_batch(5) bankaccount_pk = bankaccount.pk bankaccount.delete() self.assertEqual( BankTransactionScheduler.objects.filter( bankaccount__pk=bankaccount_pk).count(), 0, )
def test_delete_bankaccount(self): bankaccount = BankAccountFactory() tag = BankTransactionTagFactory() BankTransactionFactory(bankaccount=bankaccount, tag=tag) pk = bankaccount.pk bankaccount.delete() self.assertEqual( BankTransaction.objects.filter(bankaccount__pk=pk).count(), 0, ) # Should not be deleted. tag.refresh_from_db()
class ManagerTestCase(unittest.TestCase): def setUp(self): for bankaccount in BankAccount.objects.all(): bankaccount.delete() self.bankaccount = BankAccountFactory(balance=0) def tearDown(self): self.bankaccount.delete() def test_awaiting_bank_transactions(self): # Waiting, should be good. bts1 = BankTransactionSchedulerFactory( amount=Decimal('0'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, state=BankTransactionScheduler.STATE_WAITING, last_action=None, ) # Finished, but need to be reroll. bts2 = BankTransactionSchedulerFactory( amount=Decimal('0'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, state=BankTransactionScheduler.STATE_FINISHED, last_action=timezone.make_aware(datetime.datetime(2015, 5, 19, 15)), ) # Finished, but need to be reroll. bts3 = BankTransactionSchedulerFactory( amount=Decimal('0'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_WEEKLY, state=BankTransactionScheduler.STATE_FINISHED, last_action=timezone.make_aware(datetime.datetime(2015, 5, 19, 15)), ) # Failed, do nothing. bts4 = BankTransactionSchedulerFactory( # noqa amount=Decimal('0'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, state=BankTransactionScheduler.STATE_FAILED, last_action=None, ) # Month and week with patch('django.utils.timezone.now'): timezone.now.return_value = timezone.make_aware( datetime.datetime(2015, 6, 2, 15), ) qs = BankTransactionScheduler.objects.get_awaiting_banktransactions() qs = qs.order_by('pk') self.assertListEqual( [obj.pk for obj in qs], [bts1.pk, bts2.pk, bts3.pk], ) # Week only. with patch('django.utils.timezone.now'): timezone.now.return_value = timezone.make_aware( datetime.datetime(2015, 5, 26, 15), ) qs = BankTransactionScheduler.objects.get_awaiting_banktransactions() qs = qs.order_by('pk') self.assertListEqual( [obj.pk for obj in qs], [bts1.pk, bts3.pk], ) # None of both. with patch('django.utils.timezone.now'): timezone.now.return_value = timezone.make_aware( datetime.datetime(2015, 5, 20), ) qs = BankTransactionScheduler.objects.get_awaiting_banktransactions() qs = qs.order_by('pk') self.assertListEqual( [obj.pk for obj in qs], [bts1.pk], ) def test_total_debit(self): total = BankTransactionScheduler.objects.get_total_debit(self.bankaccount) self.assertFalse(total) BankTransactionSchedulerFactory( amount=Decimal('-15'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, ) BankTransactionSchedulerFactory( amount=Decimal('35'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, ) BankTransactionSchedulerFactory( amount=Decimal('-30'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, ) BankTransactionSchedulerFactory( amount=Decimal('-5'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_WEEKLY, ) # Inactive. BankTransactionSchedulerFactory( amount=Decimal('-5'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_WEEKLY, status=BankTransactionScheduler.STATUS_INACTIVE, ) # Not a scheduler, don't count it. BankTransactionFactory( amount=Decimal('-10'), bankaccount=self.bankaccount, ) total = BankTransactionScheduler.objects.get_total_debit(self.bankaccount) self.assertDictEqual(total, { BankTransactionScheduler.TYPE_MONTHLY: Decimal(-45), BankTransactionScheduler.TYPE_WEEKLY: Decimal(-5), }) def test_total_credit(self): total = BankTransactionScheduler.objects.get_total_credit(self.bankaccount) self.assertFalse(total) BankTransactionSchedulerFactory( amount=Decimal('15'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, ) BankTransactionSchedulerFactory( amount=Decimal('-35'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, ) BankTransactionSchedulerFactory( amount=Decimal('30'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, ) BankTransactionSchedulerFactory( amount=Decimal('5'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_WEEKLY, ) # Inactive. BankTransactionSchedulerFactory( amount=Decimal('5'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_WEEKLY, status=BankTransactionScheduler.STATUS_INACTIVE, ) # Not a scheduler, don't count it. BankTransactionFactory( amount=Decimal('10'), bankaccount=self.bankaccount, ) total = BankTransactionScheduler.objects.get_total_credit(self.bankaccount) self.assertDictEqual(total, { BankTransactionScheduler.TYPE_MONTHLY: Decimal(45), BankTransactionScheduler.TYPE_WEEKLY: Decimal(5), })
class ManagerTestCase(unittest.TestCase): def setUp(self): for bankaccount in BankAccount.objects.all(): bankaccount.delete() self.bankaccount = BankAccountFactory(balance=0) def tearDown(self): self.bankaccount.delete() def test_awaiting_bank_transactions(self): # Waiting, should be good. bts1 = BankTransactionSchedulerFactory( amount=Decimal('0'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, state=BankTransactionScheduler.STATE_WAITING, last_action=None, ) # Finished, but need to be reroll. bts2 = BankTransactionSchedulerFactory( amount=Decimal('0'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, state=BankTransactionScheduler.STATE_FINISHED, last_action=timezone.make_aware(datetime.datetime(2015, 5, 19, 15)), ) # Finished, but need to be reroll. bts3 = BankTransactionSchedulerFactory( amount=Decimal('0'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_WEEKLY, state=BankTransactionScheduler.STATE_FINISHED, last_action=timezone.make_aware(datetime.datetime(2015, 5, 19, 15)), ) # Failed, do nothing. bts4 = BankTransactionSchedulerFactory( # noqa amount=Decimal('0'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, state=BankTransactionScheduler.STATE_FAILED, last_action=None, ) # Month and week with patch('django.utils.timezone.now'): timezone.now.return_value = timezone.make_aware( datetime.datetime(2015, 6, 2, 15), ) qs = BankTransactionScheduler.objects.get_awaiting_banktransactions( ) qs = qs.order_by('pk') self.assertListEqual( [obj.pk for obj in qs], [bts1.pk, bts2.pk, bts3.pk], ) # Week only. with patch('django.utils.timezone.now'): timezone.now.return_value = timezone.make_aware( datetime.datetime(2015, 5, 26, 15), ) qs = BankTransactionScheduler.objects.get_awaiting_banktransactions( ) qs = qs.order_by('pk') self.assertListEqual( [obj.pk for obj in qs], [bts1.pk, bts3.pk], ) # None of both. with patch('django.utils.timezone.now'): timezone.now.return_value = timezone.make_aware( datetime.datetime(2015, 5, 20), ) qs = BankTransactionScheduler.objects.get_awaiting_banktransactions( ) qs = qs.order_by('pk') self.assertListEqual( [obj.pk for obj in qs], [bts1.pk], ) def test_total_debit(self): total = BankTransactionScheduler.objects.get_total_debit( self.bankaccount) self.assertFalse(total) BankTransactionSchedulerFactory( amount=Decimal('-15'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, ) BankTransactionSchedulerFactory( amount=Decimal('35'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, ) BankTransactionSchedulerFactory( amount=Decimal('-30'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, ) BankTransactionSchedulerFactory( amount=Decimal('-5'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_WEEKLY, ) # Inactive. BankTransactionSchedulerFactory( amount=Decimal('-5'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_WEEKLY, status=BankTransactionScheduler.STATUS_INACTIVE, ) # Not a scheduler, don't count it. BankTransactionFactory( amount=Decimal('-10'), bankaccount=self.bankaccount, ) total = BankTransactionScheduler.objects.get_total_debit( self.bankaccount) self.assertDictEqual( total, { BankTransactionScheduler.TYPE_MONTHLY: Decimal(-45), BankTransactionScheduler.TYPE_WEEKLY: Decimal(-5), }) def test_total_credit(self): total = BankTransactionScheduler.objects.get_total_credit( self.bankaccount) self.assertFalse(total) BankTransactionSchedulerFactory( amount=Decimal('15'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, ) BankTransactionSchedulerFactory( amount=Decimal('-35'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, ) BankTransactionSchedulerFactory( amount=Decimal('30'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_MONTHLY, ) BankTransactionSchedulerFactory( amount=Decimal('5'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_WEEKLY, ) # Inactive. BankTransactionSchedulerFactory( amount=Decimal('5'), bankaccount=self.bankaccount, type=BankTransactionScheduler.TYPE_WEEKLY, status=BankTransactionScheduler.STATUS_INACTIVE, ) # Not a scheduler, don't count it. BankTransactionFactory( amount=Decimal('10'), bankaccount=self.bankaccount, ) total = BankTransactionScheduler.objects.get_total_credit( self.bankaccount) self.assertDictEqual( total, { BankTransactionScheduler.TYPE_MONTHLY: Decimal(45), BankTransactionScheduler.TYPE_WEEKLY: Decimal(5), })