Passed
Push — main ( 97b175...ba1019 )
by Sat CFDI
05:01
created

test_pac_diverza.test_diverza_stamp_pago_v40()   B

Complexity

Conditions 3

Size

Total Lines 72
Code Lines 54

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 54
nop 0
dl 0
loc 72
rs 8.5054
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
import json
2
import os
3
from datetime import datetime
4
from decimal import Decimal
5
from unittest import mock
6
7
from satcfdi.create import Issuer
8
from satcfdi.pacs import Environment
9
from satcfdi.pacs.diverza import Diverza
10
from satcfdi.create.cfd import cfdi33, cfdi40, pago20
11
from tests.utils import get_signer, verify_result
12
13
current_dir = os.path.dirname(__file__)
14
module = 'satcfdi'
15
16
17
def test_diverza_validate_rfc():
18
    diverza = Diverza(
19
        rfc="AAA010101AAA",
20
        id="3935",
21
        token="ABCD1234"
22
    )
23
24
    with mock.patch(f'requests.request') as mk:
25
        mk.return_value.json = mock.Mock(return_value={'identifiers': [{'rfc': 'AAA010101AAA', 'active': 'Y'}]})
26
        
27
        r = diverza.rfc_valid("AAA010101AAA")
28
        assert r
29
30
    with mock.patch(f'requests.request') as mk:
31
        mk.return_value.json = mock.Mock(return_value={'identifiers': [{'rfc': 'AAA010101AAA', 'active': 'Y'}, {'rfc': 'ABC010101DAS', 'active': 'N'}]})
32
        
33
        r = diverza.rfc_valid(["AAA010101AAA", "ABC010101DAS"])
34
35
        assert r[0]
36
        assert not r[1]
37
38
39
def test_diverza_stamp():
40
    signer = get_signer('xiqb891116qe4')
41
    emisor = Issuer(signer=signer, tax_system="601")
42
43
    diverza = Diverza(
44
        rfc="AAA010101AAA",
45
        id="3935",
46
        token="ABCD1234",
47
        environment=Environment.TEST
48
    )
49
50
    cfdi = cfdi33.Comprobante(
51
        emisor=emisor,
52
        lugar_expedicion="56820",
53
        fecha=datetime.fromisoformat("2022-09-28T22:40:38"),
54
        receptor=cfdi33.Receptor(
55
            rfc='KIJ0906199R1',
56
            nombre='KIJ, S.A DE C.V.',
57
            uso_cfdi='G03'
58
        ),
59
        metodo_pago='PPD',
60
        serie="A",
61
        folio="123456",
62
        conceptos=[
63
            cfdi33.Concepto(
64
                cuenta_predial='1234567890',
65
                clave_prod_serv='10101702',
66
                cantidad=Decimal('1.00'),
67
                clave_unidad='E48',
68
                descripcion='SERVICIOS DE FACTURACION',
69
                valor_unitario=Decimal('15390.30'),
70
                traslados=cfdi33.Impuesto.parse('002|Tasa|0.160000'),
71
                retenciones=[cfdi33.Impuesto.parse('001|Tasa|0.100000'), cfdi33.Impuesto.parse('002|Tasa|0.106667')],
72
            )
73
        ]
74
    )
75
76
    with mock.patch(f'requests.request') as mk:
77
        mk.return_value.json = mock.Mock(return_value={
78
            "uuid": "3d94d0c5-9d4d-4c73-a61b-d083c553b7cc",
79
            "content": "dGhpcyBpcyBhIHRlc3QgeG1s"
80
        })
81
        diverza.stamp(cfdi=cfdi)
82
83
        assert mk.called
84
        mk.call_args.kwargs["headers"]["User-Agent"] = 'this is a test'
85
86
        args = json.dumps(mk.call_args.kwargs, indent=2)
87
        verify = verify_result(data=args, filename="test_diverza_stamp.json")
88
        assert verify
89
90
    with mock.patch(f'requests.request') as mk:
91
        mk.return_value.json = mock.Mock(return_value={
92
            "uuid": "3d94d0c5-9d4d-4c73-a61b-d083c553b7cc",
93
            "content": "dGhpcyBpcyBhIHRlc3QgeG1s"
94
        })
95
        diverza.issue(
96
            cfdi=cfdi,
97
            # certificate_number=signer.certificate_number()
98
        )
99
100
        assert mk.called
101
        mk.call_args.kwargs["headers"]["User-Agent"] = 'this is a test'
102
103
        args = json.dumps(mk.call_args.kwargs, indent=2)
104
        verify = verify_result(data=args, filename="test_diverza_issue.json")
105
        assert verify
106
107
108
def test_diverza_stamp_v40():
109
    signer = get_signer('xiqb891116qe4')
110
    emisor = Issuer(signer=signer, tax_system="601")
111
112
    diverza = Diverza(
113
        rfc="AAA010101AAA",
114
        id="3935",
115
        token="ABCD1234",
116
        environment=Environment.TEST
117
    )
118
119
    cfdi = cfdi40.Comprobante(
120
        emisor=emisor,
121
        lugar_expedicion="56820",
122
        fecha=datetime.fromisoformat("2022-09-28T22:40:38"),
123
        receptor=cfdi40.Receptor(
124
            rfc='KIJ0906199R1',
125
            nombre='KIJ, S.A DE C.V.',
126
            uso_cfdi='G03',
127
            domicilio_fiscal_receptor="59820",
128
            regimen_fiscal_receptor="601"
129
        ),
130
        metodo_pago='PPD',
131
        serie="A",
132
        folio="123456",
133
        conceptos=[
134
            cfdi40.Concepto(
135
                cuenta_predial='1234567890',
136
                clave_prod_serv='10101702',
137
                cantidad=Decimal('1.00'),
138
                clave_unidad='E48',
139
                descripcion='SERVICIOS DE FACTURACION',
140
                valor_unitario=Decimal('15390.30'),
141
                traslados=cfdi40.Impuesto.parse('002|Tasa|0.160000'),
142
                retenciones=[cfdi40.Impuesto.parse('001|Tasa|0.100000'), cfdi40.Impuesto.parse('002|Tasa|0.106667')],
143
            )
144
        ]
145
    )
146
147
    with mock.patch(f'requests.request') as mk:
148
        mk.return_value.json = mock.Mock(return_value={
149
            "uuid": "3d94d0c5-9d4d-4c73-a61b-d083c553b7cc",
150
            "content": "dGhpcyBpcyBhIHRlc3QgeG1s"
151
        })
152
        diverza.stamp(cfdi=cfdi)
153
154
        assert mk.called
155
        mk.call_args.kwargs["headers"]["User-Agent"] = 'this is a test'
156
157
        args = json.dumps(mk.call_args.kwargs, indent=2)
158
        verify = verify_result(data=args, filename="test_diverza_stamp_v40.json")
159
        assert verify
160
161
    with mock.patch(f'requests.request') as mk:
162
        mk.return_value.json = mock.Mock(return_value={
163
            "uuid": "3d94d0c5-9d4d-4c73-a61b-d083c553b7cc",
164
            "content": "dGhpcyBpcyBhIHRlc3QgeG1s"
165
        })
166
        diverza.issue(
167
            cfdi=cfdi,
168
            # certificate_number=signer.certificate_number()
169
        )
170
171
        assert mk.called
172
        mk.call_args.kwargs["headers"]["User-Agent"] = 'this is a test'
173
174
        args = json.dumps(mk.call_args.kwargs, indent=2)
175
        verify = verify_result(data=args, filename="test_diverza_issue_v40.json")
176
        assert verify
177
178
179
def test_diverza_stamp_pago_v40():
180
    signer = get_signer('xiqb891116qe4')
181
    emisor = Issuer(signer=signer, tax_system="601")
182
183
    diverza = Diverza(
184
        rfc="AAA010101AAA",
185
        id="3935",
186
        token="ABCD1234",
187
        environment=Environment.TEST
188
    )
189
190
    cfdi = cfdi40.Comprobante.pago(
191
        emisor=emisor,
192
        fecha=datetime.fromisoformat("2022-09-28T22:40:38"),
193
        receptor=cfdi40.Receptor(
194
            rfc='KIJ0906199R1',
195
            nombre='KIJ, S.A DE C.V.',
196
            uso_cfdi='G03',
197
            domicilio_fiscal_receptor="59820",
198
            regimen_fiscal_receptor="601"
199
        ),
200
        lugar_expedicion="56820",
201
        complemento_pago=pago20.Pagos(
202
            pago=pago20.Pago(
203
                fecha_pago=datetime(2020, 1, 1),
204
                forma_de_pago_p='03',
205
                moneda_p='MXN',
206
                tipo_cambio_p=1,
207
                docto_relacionado=pago20.DoctoRelacionado(
208
                    id_documento='d6042dc8-d525-4e78-8d1b-092c878bd518',
209
                    imp_pagado=Decimal("100.3"),
210
                    imp_saldo_ant=Decimal("203.45"),
211
                    num_parcialidad=3,
212
                    moneda_dr="MXN",
213
                    objeto_imp_dr="01"
214
                )
215
            )
216
        ),
217
        serie="A",
218
        folio="123456"
219
    )
220
221
    with mock.patch(f'requests.request') as mk:
222
        mk.return_value.json = mock.Mock(return_value={
223
            "uuid": "3d94d0c5-9d4d-4c73-a61b-d083c553b7cc",
224
            "content": "dGhpcyBpcyBhIHRlc3QgeG1s"
225
        })
226
        diverza.stamp(cfdi=cfdi)
227
228
        assert mk.called
229
        mk.call_args.kwargs["headers"]["User-Agent"] = 'this is a test'
230
231
        args = json.dumps(mk.call_args.kwargs, indent=2)
232
        verify = verify_result(data=args, filename="test_diverza_stamp_pago_v40.json")
233
        assert verify
234
235
    with mock.patch(f'requests.request') as mk:
236
        mk.return_value.json = mock.Mock(return_value={
237
            "uuid": "3d94d0c5-9d4d-4c73-a61b-d083c553b7cc",
238
            "content": "dGhpcyBpcyBhIHRlc3QgeG1s"
239
        })
240
        diverza.issue(
241
            cfdi=cfdi,
242
            # certificate_number=signer.certificate_number()
243
        )
244
245
        assert mk.called
246
        mk.call_args.kwargs["headers"]["User-Agent"] = 'this is a test'
247
248
        args = json.dumps(mk.call_args.kwargs, indent=2)
249
        verify = verify_result(data=args, filename="test_diverza_issue_pago_v40.json")
250
        assert verify
251
252