Exemple #1
0
    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,
        )
Exemple #2
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()
Exemple #3
0
    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()
Exemple #5
0
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),
        })
Exemple #6
0
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),
            })