Pular para conteúdo

Test finances account serializer

AccountSerializerTestCase

Bases: TestCase

Testes para o serializador de conta.

Esta classe contém testes para o serializador de Account, que é responsável por validar e transformar dados de contas financeiras em um formato adequado para o uso na API.

Source code in finances/tests/test_finances_account_serializer.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
class AccountSerializerTestCase(TestCase):
    """
    Testes para o serializador de conta.

    Esta classe contém testes para o serializador de Account, que é responsável
    por validar e transformar dados
    de contas financeiras em um formato adequado para o uso na API.
    """

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

        Este método é executado antes de cada teste. Ele cria instâncias
        iniciais de objetos necessários 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='Conta Corrente',
            balance=1000
        )

    def test_valid_account(self):
        """
        Testa a validação de uma conta válida.

        Este teste verifica se o serializador aceita corretamente uma conta
        válida e retorna os dados esperados.
        """

        serializer = AccountSerializer(instance=self.account)
        data = serializer.data
        self.assertEqual(data['owner'], self.user.id)
        self.assertEqual(data['name'], 'Conta Corrente')
        self.assertEqual(float(data['balance']), 1000)

    def test_invalid_negative_balance(self):
        """
        Testa a validação de um saldo negativo.

        Este teste verifica se o serializador rejeita corretamente um saldo
        negativo e retorna uma mensagem de erro apropriada.
        """

        invalid_data = {
            'owner': self.user.id,
            'name': 'Conta Poupança',
            'balance': -100
        }

        serializer = AccountSerializer(data=invalid_data)
        with self.assertRaises(ValidationError) as context:
            serializer.is_valid(raise_exception=True)
        self.assertEqual(
            context.exception.detail,
            {'balance': ['The balance must not be negative.']}
        )

    def test_invalid_missing_owner(self):
        """
        Testa a validação de proprietário ausente.

        Este teste verifica se o serializador rejeita corretamente uma conta
        sem proprietário e retorna uma mensagem de erro apropriada.
        """

        invalid_data = {
            'name': 'Conta Investimento',
            'balance': 2000
        }

        serializer = AccountSerializer(data=invalid_data)
        self.assertFalse(serializer.is_valid())
        self.assertEqual(serializer.errors, {
                         'owner': ['Este campo é obrigatório.']})

setUp()

Configuração inicial para os testes.

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

Source code in finances/tests/test_finances_account_serializer.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def setUp(self):
    """
    Configuração inicial para os testes.

    Este método é executado antes de cada teste. Ele cria instâncias
    iniciais de objetos necessários 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='Conta Corrente',
        balance=1000
    )

test_invalid_missing_owner()

Testa a validação de proprietário ausente.

Este teste verifica se o serializador rejeita corretamente uma conta sem proprietário e retorna uma mensagem de erro apropriada.

Source code in finances/tests/test_finances_account_serializer.py
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
def test_invalid_missing_owner(self):
    """
    Testa a validação de proprietário ausente.

    Este teste verifica se o serializador rejeita corretamente uma conta
    sem proprietário e retorna uma mensagem de erro apropriada.
    """

    invalid_data = {
        'name': 'Conta Investimento',
        'balance': 2000
    }

    serializer = AccountSerializer(data=invalid_data)
    self.assertFalse(serializer.is_valid())
    self.assertEqual(serializer.errors, {
                     'owner': ['Este campo é obrigatório.']})

test_invalid_negative_balance()

Testa a validação de um saldo negativo.

Este teste verifica se o serializador rejeita corretamente um saldo negativo e retorna uma mensagem de erro apropriada.

Source code in finances/tests/test_finances_account_serializer.py
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
def test_invalid_negative_balance(self):
    """
    Testa a validação de um saldo negativo.

    Este teste verifica se o serializador rejeita corretamente um saldo
    negativo e retorna uma mensagem de erro apropriada.
    """

    invalid_data = {
        'owner': self.user.id,
        'name': 'Conta Poupança',
        'balance': -100
    }

    serializer = AccountSerializer(data=invalid_data)
    with self.assertRaises(ValidationError) as context:
        serializer.is_valid(raise_exception=True)
    self.assertEqual(
        context.exception.detail,
        {'balance': ['The balance must not be negative.']}
    )

test_valid_account()

Testa a validação de uma conta válida.

Este teste verifica se o serializador aceita corretamente uma conta válida e retorna os dados esperados.

Source code in finances/tests/test_finances_account_serializer.py
39
40
41
42
43
44
45
46
47
48
49
50
51
def test_valid_account(self):
    """
    Testa a validação de uma conta válida.

    Este teste verifica se o serializador aceita corretamente uma conta
    válida e retorna os dados esperados.
    """

    serializer = AccountSerializer(instance=self.account)
    data = serializer.data
    self.assertEqual(data['owner'], self.user.id)
    self.assertEqual(data['name'], 'Conta Corrente')
    self.assertEqual(float(data['balance']), 1000)