Example #1
0
class GroupTestCase(unittest.TestCase):
    def setUp(self):
        self.users = [
            User(username="******"),
            User(username="******"),
            User(username="******"),
        ]
        for user in self.users:
            user.save()

        self.group = Group(name="Group 1", slug="group1")
        self.group.save()

        self.accounts = [
            # Normal user account
            Account(
                name="Account 1",
                slug="account1",
                group=self.group,
                owner=self.users[0],
            ),
            # Normal user account
            Account(
                name="Account 2",
                slug="account2",
                group=self.group,
                owner=self.users[1],
            ),
            # Inactive user account
            Account(
                name="Account 3",
                slug="account3",
                group=self.group,
                owner=self.users[2],
                active=False,
            ),
            # Group account
            Account(
                name="Account 4",
                slug="account4",
                group=self.group,
                type=Account.ASSET_ACCOUNT,
                group_account=True,
            ),
            # Inactive group account
            Account(
                name="Account 5",
                slug="account5",
                group=self.group,
                type=Account.ASSET_ACCOUNT,
                active=False,
                group_account=True,
            ),
            # Bank account
            self.group.roleaccount_set.get(role=RoleAccount.BANK_ACCOUNT
                                           ).account,
            # Cash account
            self.group.roleaccount_set.get(role=RoleAccount.CASH_ACCOUNT
                                           ).account,
        ]
        for account in self.accounts:
            account.save()

        self.transactions = {
            "Pen": Transaction(group=self.group),
            "Com": Transaction(group=self.group),
            "Rej": Transaction(group=self.group),
        }
        for transaction in self.transactions.values():
            transaction.save()
            transaction.entry_set.create(account=self.accounts[0], credit=100)
            transaction.entry_set.create(account=self.accounts[1], debit=100)
            transaction.set_pending(user=self.users[0])

        self.transactions["Undef"] = Transaction(group=self.group)
        self.transactions["Undef"].save()

        self.transactions["Com"].set_committed(user=self.users[1])
        self.transactions["Rej"].set_rejected(user=self.users[1])

    def tearDown(self):
        for transaction in self.transactions.values():
            transaction.delete()
        for account in self.accounts:
            account.delete()
        self.group.delete()
        for user in self.users:
            user.delete()

    def testUnicode(self):
        """Checks that __str__() returns group name"""

        assert str(self.group) == self.group.name

    def testAbsoluteUrl(self):
        """Checks that get_absolute_url() contains group slug"""

        assert self.group.slug in self.group.get_absolute_url()

    def testEmptySlugRaisesError(self):
        """Checks that saving a group without a slug results in a ValueError"""

        self.group.slug = ""
        with pytest.raises(ValueError):
            self.group.save()

    def testGetAccountNumberDisplay(self):
        """Check that account numbers are formated correctly."""

        self.group.account_number = "12345678901"
        assert "1234.56.78901" == self.group.get_account_number_display()

    def testUserAccountSet(self):
        """Checks that get_user_account_set returns all user accounts"""

        set = self.group.get_user_account_set()
        assert set.count() == 3
        assert self.accounts[0] in set
        assert self.accounts[1] in set
        assert self.accounts[2] in set
        assert self.accounts[3] not in set
        assert self.accounts[4] not in set
        assert self.accounts[5] not in set
        assert self.accounts[6] not in set

    def testGroupAccountSet(self):
        """Checks that get_group_account_set returns all group accounts"""

        set = self.group.get_group_account_set()
        assert set.count() == 4
        assert self.accounts[0] not in set
        assert self.accounts[1] not in set
        assert self.accounts[2] not in set
        assert self.accounts[3] in set
        assert self.accounts[4] in set
        assert self.accounts[5] in set
        assert self.accounts[6] in set

    # --- Transaction set tests
    # Please keep in sync with Account's set tests

    def testTransactionSet(self):
        """Checks that transaction_set returns all transactions that is not
        rejected"""

        set = self.group.transaction_set
        assert set.count() == 2
        assert self.transactions["Pen"] in set
        assert self.transactions["Com"] in set
        assert self.transactions["Rej"] not in set

    def testTransactionSetWithRejected(self):
        """Checks that transaction_set_with_rejected returns all
        transactions"""

        set = self.group.transaction_set_with_rejected
        assert set.count() == 3
        assert self.transactions["Pen"] in set
        assert self.transactions["Com"] in set
        assert self.transactions["Rej"] in set

    def testPendingTransactionSet(self):
        """Checks that pending_transaction_set returns all pending
        transactions"""

        set = self.group.pending_transaction_set
        assert set.count() == 1
        assert self.transactions["Pen"] in set
        assert self.transactions["Com"] not in set
        assert self.transactions["Rej"] not in set

    def testCommittedTransactionSet(self):
        """Checks that committed_transaction_set returns all committed
        transactions that are not rejected"""

        set = self.group.committed_transaction_set
        assert set.count() == 1
        assert self.transactions["Pen"] not in set
        assert self.transactions["Com"] in set
        assert self.transactions["Rej"] not in set

    def testRejectedTransactionSet(self):
        """Checks that rejected_transaction_set returns all rejected
        transactions"""

        set = self.group.rejected_transaction_set
        assert set.count() == 1
        assert self.transactions["Pen"] not in set
        assert self.transactions["Com"] not in set
        assert self.transactions["Rej"] in set
Example #2
0
class GroupTestCase(unittest.TestCase):
    def setUp(self):
        self.users = [
            User(username='******'),
            User(username='******'),
            User(username='******'),
        ]
        for user in self.users:
            user.save()

        self.group = Group(name='Group 1', slug='group1')
        self.group.save()

        self.accounts = [
            # Normal user account
            Account(name='Account 1',
                    slug='account1',
                    group=self.group,
                    owner=self.users[0]),
            # Normal user account
            Account(name='Account 2',
                    slug='account2',
                    group=self.group,
                    owner=self.users[1]),
            # Inactive user account
            Account(name='Account 3',
                    slug='account3',
                    group=self.group,
                    owner=self.users[2],
                    active=False),
            # Group account
            Account(name='Account 4',
                    slug='account4',
                    group=self.group,
                    type=Account.ASSET_ACCOUNT,
                    group_account=True),
            # Inactive group account
            Account(name='Account 5',
                    slug='account5',
                    group=self.group,
                    type=Account.ASSET_ACCOUNT,
                    active=False,
                    group_account=True),
            # Bank account
            self.group.roleaccount_set.get(role=RoleAccount.BANK_ACCOUNT
                                           ).account,
            # Cash account
            self.group.roleaccount_set.get(role=RoleAccount.CASH_ACCOUNT
                                           ).account,
        ]
        for account in self.accounts:
            account.save()

        self.transactions = {
            'Pen': Transaction(group=self.group),
            'Com': Transaction(group=self.group),
            'Rej': Transaction(group=self.group),
        }
        for transaction in self.transactions.values():
            transaction.save()
            transaction.entry_set.add(
                TransactionEntry(account=self.accounts[0], credit=100))
            transaction.entry_set.add(
                TransactionEntry(account=self.accounts[1], debit=100))
            transaction.set_pending(user=self.users[0])

        self.transactions['Undef'] = Transaction(group=self.group)
        self.transactions['Undef'].save()

        self.transactions['Com'].set_committed(user=self.users[1])
        self.transactions['Rej'].set_rejected(user=self.users[1])

    def tearDown(self):
        for transaction in self.transactions.values():
            transaction.delete()
        for account in self.accounts:
            account.delete()
        self.group.delete()
        for user in self.users:
            user.delete()

    def testUnicode(self):
        """Checks that __unicode__() returns group name"""

        self.assertEquals(self.group.name, self.group.__unicode__())

    def testAbsoluteUrl(self):
        """Checks that get_absolute_url() contains group slug"""

        self.assert_(self.group.slug in self.group.get_absolute_url())

    def testEmptySlugRaisesError(self):
        """Checks that saving a group without a slug results in a ValueError"""

        self.group.slug = ''
        with self.assertRaises(ValueError):
            self.group.save()

    def testGetAccountNumberDisplay(self):
        """Check that account numbers are formated correctly."""

        self.group.account_number = '12345678901'
        self.assertEqual('1234.56.78901',
                         self.group.get_account_number_display())

    def testUserAccountSet(self):
        """Checks that get_user_account_set returns all user accounts"""

        set = self.group.get_user_account_set()
        self.assertEqual(set.count(), 3)
        self.assert_(self.accounts[0] in set)
        self.assert_(self.accounts[1] in set)
        self.assert_(self.accounts[2] in set)
        self.assert_(self.accounts[3] not in set)
        self.assert_(self.accounts[4] not in set)
        self.assert_(self.accounts[5] not in set)
        self.assert_(self.accounts[6] not in set)

    def testGroupAccountSet(self):
        """Checks that get_group_account_set returns all group accounts"""

        set = self.group.get_group_account_set()
        self.assertEqual(set.count(), 4)
        self.assert_(self.accounts[0] not in set)
        self.assert_(self.accounts[1] not in set)
        self.assert_(self.accounts[2] not in set)
        self.assert_(self.accounts[3] in set)
        self.assert_(self.accounts[4] in set)
        self.assert_(self.accounts[5] in set)
        self.assert_(self.accounts[6] in set)

    # --- Transaction set tests
    # Please keep in sync with Account's set tests

    def testTransactionSet(self):
        """Checks that transaction_set returns all transactions that is not
        rejected"""

        set = self.group.transaction_set
        self.assertEqual(set.count(), 2)
        self.assert_(self.transactions['Pen'] in set)
        self.assert_(self.transactions['Com'] in set)
        self.assert_(self.transactions['Rej'] not in set)

    def testTransactionSetWithRejected(self):
        """Checks that transaction_set_with_rejected returns all
        transactions"""

        set = self.group.transaction_set_with_rejected
        self.assertEqual(set.count(), 3)
        self.assert_(self.transactions['Pen'] in set)
        self.assert_(self.transactions['Com'] in set)
        self.assert_(self.transactions['Rej'] in set)

    def testPendingTransactionSet(self):
        """Checks that pending_transaction_set returns all pending
        transactions"""

        set = self.group.pending_transaction_set
        self.assertEqual(set.count(), 1)
        self.assert_(self.transactions['Pen'] in set)
        self.assert_(self.transactions['Com'] not in set)
        self.assert_(self.transactions['Rej'] not in set)

    def testCommittedTransactionSet(self):
        """Checks that committed_transaction_set returns all committed
        transactions that are not rejected"""

        set = self.group.committed_transaction_set
        self.assertEqual(set.count(), 1)
        self.assert_(self.transactions['Pen'] not in set)
        self.assert_(self.transactions['Com'] in set)
        self.assert_(self.transactions['Rej'] not in set)

    def testRejectedTransactionSet(self):
        """Checks that rejected_transaction_set returns all rejected
        transactions"""

        set = self.group.rejected_transaction_set
        self.assertEqual(set.count(), 1)
        self.assert_(self.transactions['Pen'] not in set)
        self.assert_(self.transactions['Com'] not in set)
        self.assert_(self.transactions['Rej'] in set)
Example #3
0
class GroupTestCase(unittest.TestCase):
    def setUp(self):
        self.users = [User(username="******"), User(username="******"), User(username="******")]
        for user in self.users:
            user.save()

        self.group = Group(name="Group 1", slug="group1")
        self.group.save()

        self.accounts = [
            # Normal user account
            Account(name="Account 1", slug="account1", group=self.group, owner=self.users[0]),
            # Normal user account
            Account(name="Account 2", slug="account2", group=self.group, owner=self.users[1]),
            # Inactive user account
            Account(name="Account 3", slug="account3", group=self.group, owner=self.users[2], active=False),
            # Group account
            Account(
                name="Account 4", slug="account4", group=self.group, type=Account.ASSET_ACCOUNT, group_account=True
            ),
            # Inactive group account
            Account(
                name="Account 5",
                slug="account5",
                group=self.group,
                type=Account.ASSET_ACCOUNT,
                active=False,
                group_account=True,
            ),
            # Bank account
            self.group.roleaccount_set.get(role=RoleAccount.BANK_ACCOUNT).account,
            # Cash account
            self.group.roleaccount_set.get(role=RoleAccount.CASH_ACCOUNT).account,
        ]
        for account in self.accounts:
            account.save()

        self.transactions = {
            "Pen": Transaction(group=self.group),
            "Com": Transaction(group=self.group),
            "Rej": Transaction(group=self.group),
        }
        for transaction in self.transactions.values():
            transaction.save()
            transaction.entry_set.add(TransactionEntry(account=self.accounts[0], credit=100))
            transaction.entry_set.add(TransactionEntry(account=self.accounts[1], debit=100))
            transaction.set_pending(user=self.users[0])

        self.transactions["Undef"] = Transaction(group=self.group)
        self.transactions["Undef"].save()

        self.transactions["Com"].set_committed(user=self.users[1])
        self.transactions["Rej"].set_rejected(user=self.users[1])

    def tearDown(self):
        for transaction in self.transactions.values():
            transaction.delete()
        for account in self.accounts:
            account.delete()
        self.group.delete()
        for user in self.users:
            user.delete()

    def testUnicode(self):
        """Checks that __unicode__() returns group name"""

        self.assertEquals(self.group.name, self.group.__unicode__())

    def testAbsoluteUrl(self):
        """Checks that get_absolute_url() contains group slug"""

        self.assert_(self.group.slug in self.group.get_absolute_url())

    def testEmptySlugRaisesError(self):
        """Checks that saving a group without a slug results in a ValueError"""

        self.group.slug = ""
        with self.assertRaises(ValueError):
            self.group.save()

    def testGetAccountNumberDisplay(self):
        """Check that account numbers are formated correctly."""

        self.group.account_number = "12345678901"
        self.assertEqual("1234.56.78901", self.group.get_account_number_display())

    def testUserAccountSet(self):
        """Checks that get_user_account_set returns all user accounts"""

        set = self.group.get_user_account_set()
        self.assertEqual(set.count(), 3)
        self.assert_(self.accounts[0] in set)
        self.assert_(self.accounts[1] in set)
        self.assert_(self.accounts[2] in set)
        self.assert_(self.accounts[3] not in set)
        self.assert_(self.accounts[4] not in set)
        self.assert_(self.accounts[5] not in set)
        self.assert_(self.accounts[6] not in set)

    def testGroupAccountSet(self):
        """Checks that get_group_account_set returns all group accounts"""

        set = self.group.get_group_account_set()
        self.assertEqual(set.count(), 4)
        self.assert_(self.accounts[0] not in set)
        self.assert_(self.accounts[1] not in set)
        self.assert_(self.accounts[2] not in set)
        self.assert_(self.accounts[3] in set)
        self.assert_(self.accounts[4] in set)
        self.assert_(self.accounts[5] in set)
        self.assert_(self.accounts[6] in set)

    # --- Transaction set tests
    # Please keep in sync with Account's set tests

    def testTransactionSet(self):
        """Checks that transaction_set returns all transactions that is not
        rejected"""

        set = self.group.transaction_set
        self.assertEqual(set.count(), 2)
        self.assert_(self.transactions["Pen"] in set)
        self.assert_(self.transactions["Com"] in set)
        self.assert_(self.transactions["Rej"] not in set)

    def testTransactionSetWithRejected(self):
        """Checks that transaction_set_with_rejected returns all
        transactions"""

        set = self.group.transaction_set_with_rejected
        self.assertEqual(set.count(), 3)
        self.assert_(self.transactions["Pen"] in set)
        self.assert_(self.transactions["Com"] in set)
        self.assert_(self.transactions["Rej"] in set)

    def testPendingTransactionSet(self):
        """Checks that pending_transaction_set returns all pending
        transactions"""

        set = self.group.pending_transaction_set
        self.assertEqual(set.count(), 1)
        self.assert_(self.transactions["Pen"] in set)
        self.assert_(self.transactions["Com"] not in set)
        self.assert_(self.transactions["Rej"] not in set)

    def testCommittedTransactionSet(self):
        """Checks that committed_transaction_set returns all committed
        transactions that are not rejected"""

        set = self.group.committed_transaction_set
        self.assertEqual(set.count(), 1)
        self.assert_(self.transactions["Pen"] not in set)
        self.assert_(self.transactions["Com"] in set)
        self.assert_(self.transactions["Rej"] not in set)

    def testRejectedTransactionSet(self):
        """Checks that rejected_transaction_set returns all rejected
        transactions"""

        set = self.group.rejected_transaction_set
        self.assertEqual(set.count(), 1)
        self.assert_(self.transactions["Pen"] not in set)
        self.assert_(self.transactions["Com"] not in set)
        self.assert_(self.transactions["Rej"] in set)