Pular para conteúdo

Test model budget

BudgetModelTestCase

Bases: TestCase

Testes para o modelo Budget.

Esta classe contém testes para o modelo Budget, que representa um orçamento financeiro.

Source code in finances/tests/test_finances_model_budget.py
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
class BudgetModelTestCase(TestCase):
    """
    Testes para o modelo Budget.

    Esta classe contém testes para o modelo Budget, que representa um orçamento
    financeiro.
    """

    def setUp(self):
        """
        Configuração inicial para os testes.

        Este método é executado antes de cada teste. Ele cria as instâncias
        iniciais de objetos necessárias para os testes.
        """

        self.user = User.objects.create_user(
            username='user1',
            password='password1',
            first_name='Carlos',
            last_name='Alberto',
            email='carlos@email.com'
        )

        self.account = Account.objects.create(
            owner=self.user,
            name='Current Account',
            balance=10000
        )

        self.category = Category.objects.create(name="Food")

        self.start_date = timezone.make_aware(datetime(2023, 1, 1))
        self.end_date = timezone.make_aware(datetime(2023, 1, 31))

        self.budget = Budget.objects.create(
            account=self.account,
            category=self.category,
            amount=1000,
            start_date=self.start_date,
            end_date=self.end_date,
            spent=0,
        )

        self.transaction = Transaction.objects.create(
            account=self.account,
            category=self.category,
            amount=250.00,
            date=timezone.make_aware(datetime(2023, 1, 15)),
            description='Shopping at the supermarket',
        )

    def test_budget_str_with_expected_output(self):
        """
        Testa o método __str__() do modelo Budget.

        Este teste verifica se o método __str__() do modelo Budget retorna a
        saída esperada, que inclui o nome da categoria e o valor do orçamento.
        """

        expected_output = f'Budget to {self.budget.category.name} - ' \
                          f'{self.budget.amount}'
        self.assertEqual(str(self.budget), expected_output)

    def test_update_spent(self):
        """
        Testa o método update_spent() do modelo Budget.

        Este teste verifica se o método update_spent() do modelo Budget
        atualiza corretamente o valor gasto com base em uma transação.
        """

        self.budget.update_spent(self.transaction.amount)
        updated_budget = Budget.objects.get(pk=self.budget.pk)
        self.assertEqual(updated_budget.spent, 250)

    def test_update_spent_with_zero_transaction_amount_returns_none(self):
        """
        Testa se o método update_spent() retorna None quando o valor da
        transação é zero.
        """

        result = self.budget.update_spent(0)

        self.assertIsNone(result)

setUp()

Configuração inicial para os testes.

Este método é executado antes de cada teste. Ele cria as instâncias iniciais de objetos necessárias para os testes.

Source code in finances/tests/test_finances_model_budget.py
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
def setUp(self):
    """
    Configuração inicial para os testes.

    Este método é executado antes de cada teste. Ele cria as instâncias
    iniciais de objetos necessárias para os testes.
    """

    self.user = User.objects.create_user(
        username='user1',
        password='password1',
        first_name='Carlos',
        last_name='Alberto',
        email='carlos@email.com'
    )

    self.account = Account.objects.create(
        owner=self.user,
        name='Current Account',
        balance=10000
    )

    self.category = Category.objects.create(name="Food")

    self.start_date = timezone.make_aware(datetime(2023, 1, 1))
    self.end_date = timezone.make_aware(datetime(2023, 1, 31))

    self.budget = Budget.objects.create(
        account=self.account,
        category=self.category,
        amount=1000,
        start_date=self.start_date,
        end_date=self.end_date,
        spent=0,
    )

    self.transaction = Transaction.objects.create(
        account=self.account,
        category=self.category,
        amount=250.00,
        date=timezone.make_aware(datetime(2023, 1, 15)),
        description='Shopping at the supermarket',
    )

test_budget_str_with_expected_output()

Testa o método str() do modelo Budget.

Este teste verifica se o método str() do modelo Budget retorna a saída esperada, que inclui o nome da categoria e o valor do orçamento.

Source code in finances/tests/test_finances_model_budget.py
60
61
62
63
64
65
66
67
68
69
70
def test_budget_str_with_expected_output(self):
    """
    Testa o método __str__() do modelo Budget.

    Este teste verifica se o método __str__() do modelo Budget retorna a
    saída esperada, que inclui o nome da categoria e o valor do orçamento.
    """

    expected_output = f'Budget to {self.budget.category.name} - ' \
                      f'{self.budget.amount}'
    self.assertEqual(str(self.budget), expected_output)

test_update_spent()

Testa o método update_spent() do modelo Budget.

Este teste verifica se o método update_spent() do modelo Budget atualiza corretamente o valor gasto com base em uma transação.

Source code in finances/tests/test_finances_model_budget.py
72
73
74
75
76
77
78
79
80
81
82
def test_update_spent(self):
    """
    Testa o método update_spent() do modelo Budget.

    Este teste verifica se o método update_spent() do modelo Budget
    atualiza corretamente o valor gasto com base em uma transação.
    """

    self.budget.update_spent(self.transaction.amount)
    updated_budget = Budget.objects.get(pk=self.budget.pk)
    self.assertEqual(updated_budget.spent, 250)

test_update_spent_with_zero_transaction_amount_returns_none()

Testa se o método update_spent() retorna None quando o valor da transação é zero.

Source code in finances/tests/test_finances_model_budget.py
84
85
86
87
88
89
90
91
92
def test_update_spent_with_zero_transaction_amount_returns_none(self):
    """
    Testa se o método update_spent() retorna None quando o valor da
    transação é zero.
    """

    result = self.budget.update_spent(0)

    self.assertIsNone(result)