test_evento.py
3.31 KB
1
2
3
4
5
6
7
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
93
94
95
import pytest
import json
from datetime import time, datetime
from rest_framework import status
from django.contrib.auth.models import User
from django.urls import reverse
from rest_framework.test import APIClient
from evento.tests.factories import EventoFactory, FechaEventoFactory
from evento.models import Evento
@pytest.mark.django_db
@pytest.mark.parametrize('mes, fecha_inicio, fecha_final', [
(10, '2024-10-07', '2024-10-07'), # Evento en octubre
(11, '2024-11-04', '2024-11-04') # Evento en noviembre
])
def test_obtener_mes_get(mes, fecha_inicio, fecha_final):
cliente = APIClient()
user = User.objects.create_user(
username='admin',
email='admin@example.com',
password='password123',
is_superuser=True,
)
cliente.force_authenticate(user=user)
calendario = FechaEventoFactory.create(duracion_evento=1)
data = {
'titulo': f'Event test for month {mes}',
'categoria': 'Cultural',
'descripcion': f'Durante el evento test para el mes {mes}',
'direccion': 'https://maps.app.goo.gl/RJExHoGFyg8Ska7CA',
'fecha_inicio': fecha_inicio,
'hora_inicio': str(time(8, 30)),
'fecha_final': fecha_final,
'hora_fin': str(time(12, 00)),
'url': 'google.com',
'fechas': json.dumps([
{
'id': calendario.pk,
'duracion_evento': 1,
'dias': None,
}
]),
}
evento = Evento.objects.create(
titulo=data['titulo'],
categoria=data['categoria'],
descripcion=data['descripcion'],
direccion=data['direccion'],
fecha_inicio=data['fecha_inicio'],
hora_inicio=data['hora_inicio'],
fecha_final=data['fecha_final'],
hora_fin=data['hora_fin'],
url=data['url']
)
evento.fechas.set([calendario])
url = reverse('evento-obtener-mes')
response = cliente.post(url, {'mes': mes}, format='multipart')
print("Response JSON:", response.json())
evento_fechas = evento.fechas.all().values()
print("Fechas asociadas al evento:", list(evento_fechas))
if response.status_code == status.HTTP_400_BAD_REQUEST:
assert response.data['error'] == (
'El mes ingresado no es válido. Por favor, ingrese el mes correspondiente a la fecha actual o posterior.'
)
else:
assert response.status_code == 200
# Verificar que solo existe una fecha asociada con el evento
assert evento.fechas.count() == 1, "Debe existir solo una fecha asociada al evento"
evento_data = response.json()['data'][0]
assert evento_data['titulo'] == f'Event test for month {mes}'
assert evento_data['categoria'] == 'Cultural'
assert evento_data['descripcion'] == f'Durante el evento test para el mes {mes}'
assert evento_data['direccion'] == 'https://maps.app.goo.gl/RJExHoGFyg8Ska7CA'
assert evento_data['fecha_inicio'] == fecha_inicio
assert evento_data['hora_inicio'] == str(time(8, 30))
assert evento_data['fecha_final'] == fecha_final
assert evento_data['hora_fin'] == str(time(12, 0))
assert evento_data['url'] == 'google.com'
assert evento_data['fechas'] == [{
'id': calendario.pk,
'duracion_evento': 1,
'dias': fecha_inicio,
}]