Tesis 1.0.0
Loading...
Searching...
No Matches
test_mercadopago_service.py
Go to the documentation of this file.
1from django.test import TestCase
2from unittest.mock import patch, MagicMock
3from payment_service.services import MercadoPagoService
4from decimal import Decimal
5
6class MercadoPagoServiceTests(TestCase):
7 """
8 Pruebas para el servicio MercadoPagoService que interactúa con la API de Mercado Pago
9 """
10
11 def setUp(self):
13 self.test_items = [
14 {
15 "id": "1",
16 "title": "Hamburguesa Clásica",
17 "description": "Hamburguesa con queso y lechuga",
18 "quantity": 2,
19 "unit_price": 500.0,
20 "currency_id": "ARS"
21 }
22 ]
23 self.external_reference = "test_reference_123"
24 self.test_payer_email = "cliente@example.com"
25
27 """Prueba la conversión de carrito en formato de lista a formato de items de Mercado Pago"""
28 cart_data = [
29 {
30 "id": 1,
31 "producto": "Hamburguesa Clásica",
32 "imageURL": "hamburguesa.jpg",
33 "cantidad": 2,
34 "precio": 500.0
35 }
36 ]
37
38 result = self.mp_service.process_cart_to_items(cart_data)
39
40 self.assertEqual(len(result), 1)
41 self.assertEqual(result[0]["id"], "1")
42 self.assertEqual(result[0]["title"], "Hamburguesa Clásica")
43 self.assertEqual(result[0]["description"], "hamburguesa.jpg")
44 self.assertEqual(result[0]["quantity"], 2)
45 self.assertEqual(result[0]["unit_price"], 500.0)
46 self.assertEqual(result[0]["currency_id"], "ARS")
47
49 """Prueba la conversión de carrito en formato de diccionario a formato de items de Mercado Pago"""
50 cart_data = {
51 "productos": [
52 {
53 "id": 2,
54 "nombre": "Pizza Muzarella",
55 "descripcion": "Pizza con queso muzarella",
56 "cantidad": 1,
57 "precio": 800.0
58 }
59 ],
60 "total": 800.0
61 }
62
63 result = self.mp_service.process_cart_to_items(cart_data)
64
65 self.assertEqual(len(result), 1)
66 self.assertEqual(result[0]["id"], "2")
67 self.assertEqual(result[0]["title"], "Pizza Muzarella")
68 self.assertEqual(result[0]["description"], "Pizza con queso muzarella")
69 self.assertEqual(result[0]["quantity"], 1)
70 self.assertEqual(result[0]["unit_price"], 800.0)
71 self.assertEqual(result[0]["currency_id"], "ARS")
72
73 @patch('mercadopago.SDK')
74 def test_create_preference_success(self, mock_sdk):
75 """Prueba la creación exitosa de una preferencia de pago"""
76 # Configurar el mock para el SDK
77 mock_preference = MagicMock()
78 mock_sdk.return_value.preference.return_value = mock_preference
79
80 # Configurar respuesta de creación de preferencia
81 mock_preference_response = {
82 "status": 201,
83 "response": {
84 "id": "test_preference_id",
85 "init_point": "https://www.mercadopago.com/checkout/v1/redirect?pref_id=test_preference_id",
86 "collector_id": 12345,
87 "items": self.test_items
88 }
89 }
90 mock_preference.create.return_value = mock_preference_response
91
92 # Configurar respuesta para obtener preferencia
93 mock_preference.get.return_value = {
94 "response": {
95 "status": "active"
96 }
97 }
98
99 # Llamar al método que queremos probar
100 result = self.mp_service.create_preference(
101 self.test_items,
104 )
105
106 # Verificar que se llamó al SDK correctamente
107 mock_preference.create.assert_called_once()
108
109 # Verificar que se devolvió la preferencia correctamente
110 self.assertEqual(result["id"], "test_preference_id")
111 self.assertEqual(result["init_point"], "https://www.mercadopago.com/checkout/v1/redirect?pref_id=test_preference_id")