Skip to content

Commit 2eb227a

Browse files
committed
Se eliminaron instrucciones innecesarias en README y se corrigieron otras. Se eliminó la carpeta ejemplos. Se corrigieron strings en __init__, boletas y test_boletas. Se simplificó la construcción de URLs con urlencode en boletas.
1 parent b7588d0 commit 2eb227a

9 files changed

Lines changed: 36 additions & 310 deletions

File tree

README.rst

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,11 @@ el cual será reconocida automáticamente por el cliente:
5050
5151
Lo que hizo el ejemplo anterior es listar boletas emitidas en un resultado e imprimir dicho resultado en consola.
5252

53-
Ejemplos
54-
--------
55-
56-
Para crear la versión Python de BHExpress, se tomaron en cuenta ejemplos para 5 casos de uso que
57-
involucran boletas, y se llevaron a Python.
58-
Los ejemplos cubren los siguientes casos:
59-
60-
- `e01-boletas_listado.py`: obtener las boletas de un período.
61-
- `e02-boleta_emitir.py`: emitir una BHE.
62-
- `e03-boleta_pdf.py`: descargar el PDF de una BHE.
63-
- `e04-boleta_email.py`: enviar por email una BHE.
64-
- `e05-boleta_anular.py`: anular una BHE.
53+
Variables de entorno
54+
--------------------
6555

66-
Los ejemplos, por defecto, hacen uso de variables de entornos, si quieres usar
67-
esto debes tenerlas creadas, por ejemplo, en Windows 10, con:
56+
La aplicación y las pruebas hacen uso de variables de entornos. Si quieres usar
57+
estos, debes tenerlas creadas. En Windows 10 se hace con:
6858

6959
.. code:: shell
7060
@@ -91,6 +81,20 @@ Estas pruebas utilizan `unittest`, se ejecutan con el archivo `run.py`, y depend
9181
`test.env`, se pueden omitir ciertas pruebas. Asegúrate de definir `BHEXPRESS_API_URL`, `BHEXPRESS_API_TOKEN`
9282
y `BHEXPRESS_EMISOR_RUT` en `test.env`, o no podrás efectuar las pruebas.
9383

84+
Para ejecutar las pruebas unitarias, debes ejecutar el siguiente código en consola desde la raíz del proyecto:
85+
86+
.. code:: shell
87+
88+
python tests/run.py
89+
90+
Si quieres ejecutar una prueba específica, deberás especificar el nombre y ruta:
91+
92+
.. code:: shell
93+
94+
python tests/run.py boletas.test_boletas.TestBheBoletas.test1_listar
95+
96+
Para ejecutar otros ejemplos, debes reemplazar `test1_listar` por el nombre de alguna de las otras pruebas descritas posteriormente.
97+
9498
A continuación se pondrán instrucciones de cómo probar el cliente de API de Python:
9599

96100
* `test1_listar()`:

bhexpress/api_client/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#
1919

2020
from os import getenv
21+
import time
2122
import requests
2223
import urllib
2324
import json

bhexpress/api_client/bhe/boletas.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#
1919

2020
from .. import ApiBase
21+
from urllib.parse import urlencode
2122

2223
class Boleta(ApiBase):
2324
'''
@@ -46,17 +47,19 @@ def listar(self, periodo = None, fecha_desde = None, fecha_hasta = None, recepto
4647
:rtype: dict
4748
:exception ApiException: Arroja un error cuando las fechas de fecha_desde y fecha_hasta no son correctas, o cuando se coloca sólo una de las dos.
4849
'''
49-
5050
url = '/bhe/boletas'
51-
51+
query = {}
5252
if periodo is not None:
53-
url += '?periodo=%(periodo)s' % {'periodo': periodo}
53+
query['periodo'] = periodo
5454
elif fecha_desde is not None and fecha_hasta is not None:
55-
url += '?fecha_desde=%(fecha_desde)s&fecha_hasta=%(fecha_hasta)s' % {'fecha_desde': fecha_desde, 'fecha_hasta': fecha_hasta}
55+
query['fecha_desde'] = fecha_desde
56+
query['fecha_hasta'] = fecha_hasta
5657
if receptor_codigo is not None:
57-
url += '?' if url.endswith('boletas') else '&'
58-
url += 'receptor_codigo=%(receptor_codigo)s' % {'receptor_codigo': receptor_codigo}
58+
query['receptor_codigo'] = receptor_codigo
5959

60+
query_string = urlencode(query)
61+
62+
url += '?%(query)s' % {'url': url, 'query': query_string}
6063
response = self.client.get(url)
6164

6265
return response.json()
@@ -69,10 +72,7 @@ def emitir(self, boleta):
6972
:return: Respuesta JSON con el encabezado y detalle de la boleta emitida.
7073
:rtype: dict
7174
'''
72-
73-
url = '/bhe/emitir'
74-
75-
response = self.client.post(url, data = boleta)
75+
response = self.client.post('/bhe/emitir', data = boleta)
7676

7777
return response.json()
7878

@@ -84,7 +84,6 @@ def pdf(self, numero_bhe):
8484
:return: Contenido del PDF de la BHE.
8585
:rtype: bytes
8686
'''
87-
8887
url = '/bhe/pdf/%(bhe)s' % {'bhe': numero_bhe}
8988

9089
return self.client.get(url).content
@@ -98,7 +97,6 @@ def email(self, numero_bhe, email):
9897
:return: Respuesta JSON con la confirmación del envío del email.
9998
:rtype: dict
10099
'''
101-
102100
url = '/bhe/email/%(bhe)s' % {'bhe': numero_bhe}
103101
body = {
104102
'destinatario': {
@@ -119,7 +117,6 @@ def anular(self, numero_bhe, causa):
119117
:return: Respuesta JSON con el encabezado de la boleta anulada.
120118
:rtype: dict
121119
'''
122-
123120
url = '/bhe/anular/%(bhe)s' % {'bhe': numero_bhe}
124121
body = {
125122
'causa': causa

ejemplos/e01-boletas_listado.py

Lines changed: 0 additions & 44 deletions
This file was deleted.

ejemplos/e02-boleta_emitir.py

Lines changed: 0 additions & 105 deletions
This file was deleted.

ejemplos/e03-boleta_pdf.py

Lines changed: 0 additions & 43 deletions
This file was deleted.

ejemplos/e04-boleta_email.py

Lines changed: 0 additions & 42 deletions
This file was deleted.

0 commit comments

Comments
 (0)