def setUp(self): self.programa = Programa( nombre='Programa para Jóvenes Zacatecanos', anio_ejercicio_fiscal=2019, recurso_asignado=600000, fuente='Gobierno', tipo='MEN', status='ACT', tipo_programa_p='APO', ) self.programa.save() self.partida = Partida( numero_partida=3000, nombre_partida='Partida 1 de 3000', monto_partida=6700.00, programa=self.programa, ) self.partida.save() self.usuario = User(username="******", email="*****@*****.**", password="******", is_superuser=True) self.usuario.save() self.administrativo = Administrativo(nombre="usuario de prueba", primer_apellido='Solís', segundo_apellido='Galván', telefono='4949412345', foto='foto.png', usuario=self.usuario) self.administrativo.save()
def setUp(self): self.programa = Programa( nombre='Programa para Jóvenes Zacatecanos', anio_ejercicio_fiscal=2019, recurso_asignado=600000, fuente='Gobierno', tipo='MEN', status='ACT', tipo_programa_p='APO', ) self.programa.save() self.partida = Partida( numero_partida=3000, nombre_partida='Partida tres mil', monto_partida=6700.00, programa=self.programa, ) self.partida.save() self.meta_programada = MetaPrograma(numero_actividades=5, numero_beneficiarios=100, numero_hombres=250, numero_mujeres=250, edad='ADU') self.meta_real = MetaReal(numero_actividades_r=5, numero_beneficiarios_r=700, numero_hombres_r=550, numero_mujeres_r=150, edad_r='NAD')
class SubprogramaFormTests(TestCase): def setUp(self): self.programa = Programa( nombre='Programa para Jóvenes Zacatecanos', anio_ejercicio_fiscal=2019, recurso_asignado=600000, fuente='Gobierno', tipo='MEN', status='ACT', tipo_programa_p='APO', ) self.programa.save() self.partida = Partida( numero_partida=3000, nombre_partida='Partida 1 de 3000', monto_partida=6700.00, programa=self.programa, ) self.partida.save() self.usuario = User(username="******", email="*****@*****.**", password="******", is_superuser=True) self.usuario.save() self.administrativo = Administrativo(nombre="usuario de prueba", primer_apellido='Solís', segundo_apellido='Galván', telefono='4949412345', foto='foto.png', usuario=self.usuario) self.administrativo.save() # El estatus se agrega por defecto def test_SubprogramaForm_crear_sin_estatus(self): form = SubprogramaForm( data={ 'programa': self.programa.id, 'nombre': 'ejemplo', 'presupuesto': 5000, 'responsable': self.usuario.id, 'estatus': 'ACT', }) self.assertTrue(form.is_valid()) # El estatus se debe indicar de forma obligatoria def test_EdicionSubprogramaForm_modificar_sin_estatus(self): form = EdicionSubprogramaForm( data={ 'programa': self.programa.id, 'nombre': 'ejemplo', 'presupuesto': 5000, 'responsable': self.usuario.id, }) self.assertFalse(form.is_valid())
def test_reactivar_usuario_ya_activado(self): programa = Programa( nombre='Programa para Jóvenes Tres', anio_ejercicio_fiscal=2022, recurso_asignado=54501, fuente='Federal', tipo='Mensual', status='Activo', ) programa.save() id = Programa.objects.first().id self.client.post('/programa/reactivar/' + str(id)) self.assertEqual(Programa.objects.first().status, 'Act')
def test_reactivar_programa_response(self): # self.guarda_programa_completo() programa = Programa( nombre='Programa para Jóvenes Cuatro', anio_ejercicio_fiscal=2053, recurso_asignado=54501, fuente='Federal', tipo='Mensual', status='Inactivo', ) programa.save() id = Programa.objects.first().id self.client.post('/programa/reactivar/' + str(id)) self.assertEqual(Programa.objects.first().status, 'ACT')
def test_boton_reactivar_programa_template(self): programa = Programa( nombre='Programa para Jóvenes Tres', anio_ejercicio_fiscal=2022, recurso_asignado=54501, fuente='Federal', tipo='Mensual', status='Inactivo', ) # self.guarda_programa_completo() programa.save() response = self.client.get('/programa/') id = Programa.objects.first().id self.assertInHTML( '<a href="/programa/reactivar/' + str(id) + '" class="btn btn-primary btn-sm">Reactivar</a>', response.rendered_content)
def guarda_programa_completo(self): self.programa_com = Programa( nombre='Programa para Jóvenes 2', anio_ejercicio_fiscal=2020, recurso_asignado=54500, fuente='Federal', tipo='Mensual', status='Activo', ) self.programa_com.save() self.partida_com = Partida( numero_partida=3000, nombre_partida='Partida de Tres Mil prueba', monto_partida=6700.00, programa=self.programa_com, ) self.partida_com.save() self.metas_es_com = MetaPrograma( numero_actividades=5, numero_beneficiarios=100, numero_hombres=250, numero_mujeres=250, edad='Jóvenes', meta_esperada=True, programa=self.programa_com, ) self.metas_es_com.save() self.metas_re_com = MetaReal( numero_actividades_r=99, numero_beneficiarios_r=100, numero_hombres_r=250, numero_mujeres_r=250, edad_r='Jóvenes', meta_esperada_r=False, programa_r=self.programa_com, ) self.metas_re_com.save() return self.programa_com
def setUp(self, nombre="Programa para Jóvenes Zacatecanos", anio_ejercicio_fiscal=2019, recurso_asignado=600000, fuente='Trimestral'): self.programa = Programa( nombre=nombre, anio_ejercicio_fiscal=anio_ejercicio_fiscal, recurso_asignado=recurso_asignado, fuente=fuente, tipo='Mensual', status='Activo', ) self.data = { 'numero_partida': 3000, 'nombre_partida': 'Partida de Tres Mil', 'monto_partida': 6700.00, # 'programa' : Programa.objects.first().id, } self.data_programa = { 'nombre': 'Programa de Recursos', 'anio_ejercicio_fiscal': 1998, 'recurso_asignado': 50000, 'fuente': 'Nacional', 'tipo': 'MEN', 'status': 'ACT', 'tipo_programa_p': 'APO', 'numero_actividades': 7, 'numero_beneficiarios': 900, 'numero_hombres': 333, 'numero_mujeres': 444, 'edad': 'ADU', 'numero_actividades_r': 5, 'numero_beneficiarios_r': 500, 'numero_hombres_r': 250, 'numero_mujeres_r': 250, 'edad_r': 'ADU', 'numero_partida': 3000, 'nombre_partida': 'Partida de Tres Mil', 'monto_partida': 6700.00, }
class SubprogramaModelTests(TestCase): def setUp(self): self.programa = Programa( nombre='Programa para Jóvenes Zacatecanos', anio_ejercicio_fiscal=2019, recurso_asignado=600000, fuente='Gobierno', tipo='MEN', status='ACT', tipo_programa_p='APO', ) self.programa.save() self.partida = Partida( numero_partida=3000, nombre_partida='Partida 1 de 3000', monto_partida=6700.00, programa=self.programa, ) self.partida.save() self.usuario = User(username="******", email="*****@*****.**", password="******", is_superuser=True) self.usuario.save() self.administrativo = Administrativo(nombre="usuario de prueba", primer_apellido='Solís', segundo_apellido='Galván', telefono='4949412345', foto='foto.png', usuario=self.usuario) self.administrativo.save() def creaDefaultSubprograma(self): return Actividad.objects.create( programa=self.programa, nombre="Subprograma De Referencia", presupuesto=20580, responsable=self.usuario, estatus="ACT", ) def creaSubprogramaPersonal(self, nombre='', presupuesto=None, estatus=''): return Actividad.objects.create( programa=self.programa, nombre=nombre, presupuesto=presupuesto, responsable=self.usuario, estatus=estatus, ) ''' Pruebas del guardado del subprograma ''' def test_subprograma_bien_guardado(self): subprograma = self.creaDefaultSubprograma() subprograma_uno = Actividad.objects.first() self.assertEqual(subprograma_uno, subprograma) self.assertEqual(subprograma_uno.nombre, 'Subprograma De Referencia') self.assertEqual(subprograma_uno.estatus, "ACT") self.assertEqual(subprograma_uno.presupuesto, 20580) self.assertEqual(len(Actividad.objects.all()), 1) def test_subprograma_guardado_con_id(self): subprograma = self.creaDefaultSubprograma() self.assertTrue(subprograma.id) ''' Pruebas del nombre del subprograma ''' def test_subprograma_nombre_no_nulo(self): with self.assertRaises(ValidationError): subprograma = self.creaSubprogramaPersonal('', 5000, 'ACT') subprograma.full_clean() def test_subprograma_nombre_no_nulo_mensaje(self): with self.assertRaisesMessage(ValidationError, "El nombre no puede estar vacío."): subprograma = self.creaSubprogramaPersonal('', 5000, 'ACT') subprograma.full_clean() def test_subprograma_nombre_letras_especiales_permitidas(self): subprograma = self.creaSubprogramaPersonal('aksñdlaäáÁàm', 5000, 'ACT') subprograma.full_clean() def test_subprograma_nombre_caracteres_especiales_no_permitidos(self): with self.assertRaises(ValidationError): subprograma = self.creaSubprogramaPersonal('aksd\'lam', 5000, 'ACT') subprograma.full_clean() def test_subp_nombre_caracteres_especiales_no_permitidos_mensaje(self): with self.assertRaisesMessage(ValidationError, "Solo se permiten letras."): subprograma = self.creaSubprogramaPersonal('aksdñlamó_', 5000, 'ACT') subprograma.full_clean() def test_subprograma_nombre_numeros_no_permitidos(self): with self.assertRaises(ValidationError): subprograma = self.creaSubprogramaPersonal('aksdlam34', 5000, 'ACT') subprograma.full_clean() def test_subprograma_nombre_numeros_no_permitidos_mensaje(self): with self.assertRaisesMessage(ValidationError, "Solo se permiten letras."): subprograma = self.creaSubprogramaPersonal('aksdl1am34', 5000, 'ACT') subprograma.full_clean() def test_subprograma_nombre_longitud_minima_pasada(self): with self.assertRaises(ValidationError): subprograma = self.creaSubprogramaPersonal('hola', 5000, 'ACT') subprograma.full_clean() def test_subprograma_nombre_longitud_minima_pasada_mensaje(self): with self.assertRaisesMessage( ValidationError, "El nombre debe ser de por lo menos 5 caracteres."): subprograma = self.creaSubprogramaPersonal('hola', 5000, 'ACT') subprograma.full_clean() def test_subprograma_nombre_longitud_maxima_pasada(self): with self.assertRaises(ValidationError): subprograma = Actividad( nombre="holadfgfffffffffhhhhhhhhhhhhhhhhhhhhhhg" + "ffffffffffffffffffffffffffhhhhhhhhhhho", presupuesto=66478, responsable=self.usuario, estatus='ACT', ) subprograma.full_clean() def test_subprograma_nombre_longitud_maxima_pasada_mensaje(self): with self.assertRaisesMessage( ValidationError, "El nombre no puede pasar los 50 caracteres."): subprograma = Actividad( nombre="holadfgfffffffffhhhhhhhhhhhhhhhhhhhhhhg" + "ffffffffffffffffffffffffffhhhhhhhhhhho", presupuesto=66478, responsable=self.usuario, estatus='ACT', ) subprograma.full_clean() ''' Pruebas del programa del subprograma ''' def test_subprograma_programa_requerido(self): error = False try: subprograma = Actividad.objects.create( nombre="nombre de ejemplo", presupuesto=66478, responsable=self.usuario, estatus='ACT', ) subprograma.full_clean() except Exception as e: error = True self.assertTrue(error) ''' Pruebas del responsable del subprograma ''' def test_subprograma_responsable_requerido(self): error = False try: subprograma = Actividad.objects.create( programa=self.programa, nombre="nombre de ejemplo", presupuesto=66478, estatus='ACT', ) subprograma.full_clean() except Exception as e: error = True self.assertTrue(error) ''' Pruebas del presupuesto del subprograma ''' def test_subprograma_presupuesto_requerido(self): try: subprograma = Actividad.objects.create( nombre="nombre", presupuesto=None, estatus="ACT", ) subprograma.full_clean() except Exception: self.assertEqual(Exception.__name__, "Exception") def test_subprograma_presupuesto_caracteres_no_numericos_no_permitidos( self): with self.assertRaises(ValidationError): subprograma = self.creaSubprogramaPersonal('ejemplo', '5000e', 'ACT') subprograma.full_clean() def test_subprograma_nombre_caracteres_no_numericos_no_permitidos(self): with self.assertRaisesMessage(ValidationError, "El presupuesto debe ser numérico."): subprograma = self.creaSubprogramaPersonal('ejemplo', '5000e', 'ACT') subprograma.full_clean()
class TestViews(TestCase): def setUp(self, nombre="Programa para Jóvenes Zacatecanos", anio_ejercicio_fiscal=2019, recurso_asignado=600000, fuente='Trimestral'): self.programa = Programa( nombre=nombre, anio_ejercicio_fiscal=anio_ejercicio_fiscal, recurso_asignado=recurso_asignado, fuente=fuente, tipo='Mensual', status='Activo', ) self.data = { 'numero_partida': 3000, 'nombre_partida': 'Partida de Tres Mil', 'monto_partida': 6700.00, # 'programa' : Programa.objects.first().id, } self.data_programa = { 'nombre': 'Programa de Recursos', 'anio_ejercicio_fiscal': 1998, 'recurso_asignado': 50000, 'fuente': 'Nacional', 'tipo': 'MEN', 'status': 'ACT', 'tipo_programa_p': 'APO', 'numero_actividades': 7, 'numero_beneficiarios': 900, 'numero_hombres': 333, 'numero_mujeres': 444, 'edad': 'ADU', 'numero_actividades_r': 5, 'numero_beneficiarios_r': 500, 'numero_hombres_r': 250, 'numero_mujeres_r': 250, 'edad_r': 'ADU', 'numero_partida': 3000, 'nombre_partida': 'Partida de Tres Mil', 'monto_partida': 6700.00, } # Test para programa nuevo # Verificar que si puede acceder a la URL indicada def test_url_programa_crear(self): response = self.client.get('/programa/nuevo') self.assertEqual(response.status_code, 200) # Ahora se hace la prueba de llamada por el nombre def test_nombre_url_programa_crear(self): response = self.client.get(reverse('nuevo_programa')) self.assertEqual(response.status_code, 200) # Probar un template que yo quiero utilizar def test_template_correcto_programa_crear(self): response = self.client.get('/programa/nuevo') self.assertTemplateUsed(response, 'programas/programa_form.html') def test_titulo_se_encuentra_en_el_template_programa_nuevo(self): response = self.client.get('/programa/nuevo') titulo_pagina = '<title>Crear Nuevo Programa</title>' self.assertInHTML(titulo_pagina, response.rendered_content) def test_agrega_programa_form(self): self.client.post('/programa/nuevo', data=self.data_programa) self.client.get('/programa/nuevo') self.assertEqual(Programa.objects.all().count(), 1) def test_anio_ejercicio_fis_formulario_se_encuentra_en_el_template(self): response = self.client.get('/programa/nuevo') label = '<p><label for="id_anio_ejercicio_fiscal">Año Fiscal:</label> ' label += '<input type="number" name="anio_ejercicio_fiscal" value="0" ' label += 'required id="id_anio_ejercicio_fiscal" class="form-control">' label += '</p>' self.assertInHTML(label, response.rendered_content) def test_no_agrega_sin_nombre_del_programa(self): self.data_programa['nombre'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_anio_fiscal_programa(self): self.data_programa['anio_ejercicio_fiscal'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_recurso_asignado_programa(self): self.data_programa['recurso_asignado'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_fuente_programa(self): self.data_programa['fuente'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_status_programa(self): self.data_programa['status'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_tipo_programa(self): self.data_programa['tipo'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_tipo_programa_p_programa(self): self.data_programa['tipo_programa_p'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) @skip def test_redirige_a_otra_url_despues_de_agregar_programa(self): response = self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(response.url, '/programa/') # Test para partida def test_agrega_partida_form(self): self.client.post('/programa/nuevo', data=self.data_programa) self.client.get('/programa/nuevo') self.assertEqual(Programa.objects.all().count(), 1) def test_no_agrega_sin_numero_de_partida(self): self.data_programa['numero_partida'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_nombre_de_partida(self): self.data_programa['nombre_partida'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_monto_de_partida(self): self.data_programa['monto_partida'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) # Test para Meta Programada def test_agrega_meta_programada_form(self): self.client.post('/programa/nuevo', data=self.data_programa) self.client.get('/programa/nuevo') self.assertEqual(Programa.objects.all().count(), 1) def test_no_agrega_sin_numero_de_actividades(self): self.data_programa['numero_actividades'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_numero_de_beneficiarios(self): self.data_programa['numero_beneficiarios'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_numero_de_hombres(self): self.data_programa['numero_hombres'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_numero_de_mujeres(self): self.data_programa['numero_mujeres'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_rango_edad(self): self.data_programa['edad'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) # Test para Meta Real def test_agrega_meta_real_form(self): self.client.post('/programa/nuevo', data=self.data_programa) self.client.get('/programa/nuevo') self.assertEqual(Programa.objects.all().count(), 1) def test_no_agrega_sin_numero_de_actividades_reales(self): self.data_programa['numero_actividades_r'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_numero_de_beneficiarios_reales(self): self.data_programa['numero_beneficiarios_r'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_numero_de_hombres_reales(self): self.data_programa['numero_hombres_r'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_numero_de_mujeres_reales(self): self.data_programa['numero_mujeres_r'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) def test_no_agrega_sin_rango_edad_reales(self): self.data_programa['edad_r'] = '' self.client.post('/programa/nuevo', data=self.data_programa) self.assertEqual(Programa.objects.all().count(), 0) # Test para listar programas # Verificar que si puede acceder a la URL indicada def test_url_programa_listado(self): response = self.client.get('/programa/') self.assertEqual(response.status_code, 200) # Ahora se hace la prueba de llamada por el nombre def test_nombre_url_programa_listado(self): response = self.client.get(reverse('lista_programa')) self.assertEqual(response.status_code, 200) # Probar un template que yo quiero utilizar def test_template_correcto_programa_listado(self): response = self.client.get('/programa/') self.assertTemplateUsed(response, 'programas/programa_list.html') def test_titulo_se_encuentra_en_el_template_programa_listado(self): response = self.client.get('/programa/') titulo_pagina = '<title>Lista de Programas</title>' self.assertInHTML(titulo_pagina, response.rendered_content) def test_envio_datos_programas(self): self.guarda_programa_completo() response = self.client.get('/programa/') self.assertIn('object_list', response.context) def test_envio_programa_jovenes_datos(self): self.guarda_programa_completo() response = self.client.get('/programa/') # print(response.context['object_list'][0]) self.assertEqual('Programa para Jóvenes 2', response.context['object_list'][0].nombre) def test_se_encuentre_en_el_template_programa_jovenes(self): self.guarda_programa_completo() response = self.client.get('/programa/') self.assertContains(response, 'Programa para Jóvenes 2') def test_programa_joven_se_encuentre_en_template_dentro_de_td(self): self.guarda_programa_completo() response = self.client.get('/programa/') self.assertInHTML('<td>Programa para Jóvenes 2</td>', response.rendered_content) # Tests para editar programas def test_url_programa_editar(self): # self.programa.save() self.guarda_programa_completo() id = Programa.objects.first().id response = self.client.get('/programa/editar/' + str(id)) self.assertEqual(response.status_code, 200) def test_template_correcto_programa_editar(self): # self.programa.save() self.guarda_programa_completo() id = Programa.objects.first().id response = self.client.get('/programa/editar/' + str(id)) self.assertTemplateUsed(response, 'programas/programa_edit.html') def test_editar_programa(self): # self.programa.save() self.guarda_programa_completo() id = Programa.objects.first().id data_solo_programa = { 'nombre': 'Programa de Recursos Modificado en POST', 'anio_ejercicio_fiscal': 1998, 'recurso_asignado': 50000, 'fuente': 'Nacional', 'tipo': 'MEN', 'status': 'ACT', 'tipo_programa_p': 'APO', 'numero_actividades': 7, 'numero_beneficiarios': 900, 'numero_hombres': 333, 'numero_mujeres': 444, 'edad': 'ADU', 'numero_actividades_r': 5, 'numero_beneficiarios_r': 500, 'numero_hombres_r': 250, 'numero_mujeres_r': 250, 'edad_r': 'ADU', 'numero_partida': 3000, 'nombre_partida': 'Partida Modificado', 'monto_partida': 6700.00, } self.client.post('/programa/editar/' + str(id), data=data_solo_programa) self.assertEqual(Programa.objects.first().nombre, 'Programa de Recursos Modificado en POST') def test_editar_partida(self): # self.programa.save() self.guarda_programa_completo() id = Programa.objects.first().id data_solo_partida = { 'nombre': 'Programa de Recursos', 'anio_ejercicio_fiscal': 1998, 'recurso_asignado': 50000, 'fuente': 'Nacional', 'tipo': 'MEN', 'status': 'ACT', 'tipo_programa_p': 'APO', 'numero_actividades': 7, 'numero_beneficiarios': 900, 'numero_hombres': 333, 'numero_mujeres': 444, 'edad': 'ADU', 'numero_actividades_r': 5, 'numero_beneficiarios_r': 500, 'numero_hombres_r': 250, 'numero_mujeres_r': 250, 'edad_r': 'ADU', 'numero_partida': 3000, 'nombre_partida': 'Partida Modificado en POST', 'monto_partida': 6700.00, } self.client.post('/programa/editar/' + str(id), data=data_solo_partida) self.assertEqual(Partida.objects.first().nombre_partida, 'Partida Modificado en POST') def test_editar_metas_reales(self): # self.programa.save() self.guarda_programa_completo() id = Programa.objects.first().id data_solo_meta_real = { 'nombre': 'Programa de Recursos', 'anio_ejercicio_fiscal': 1998, 'recurso_asignado': 50000, 'fuente': 'Nacional', 'tipo': 'MEN', 'status': 'ACT', 'tipo_programa_p': 'APO', 'numero_actividades': 7, 'numero_beneficiarios': 900, 'numero_hombres': 333, 'numero_mujeres': 444, 'edad': 'ADU', 'numero_actividades_r': 5, 'numero_beneficiarios_r': 500, 'numero_hombres_r': 250, 'numero_mujeres_r': 250, 'edad_r': 'ADU', 'numero_partida': 3000, 'nombre_partida': 'Partida Modificado en POST', 'monto_partida': 6700.00, } self.client.post('/programa/editar/' + str(id), data=data_solo_meta_real) self.assertEqual(MetaReal.objects.first().numero_actividades_r, 5) def test_editar_metas_esperadas(self): # self.programa.save() self.guarda_programa_completo() id = Programa.objects.first().id data_solo_meta_esperada = { 'nombre': 'Programa de Recursos', 'anio_ejercicio_fiscal': 1998, 'recurso_asignado': 50000, 'fuente': 'Nacional', 'tipo': 'MEN', 'status': 'ACT', 'tipo_programa_p': 'APO', 'numero_actividades': 7, 'numero_beneficiarios': 900, 'numero_hombres': 333, 'numero_mujeres': 444, 'edad': 'ADU', 'numero_actividades_r': 5, 'numero_beneficiarios_r': 500, 'numero_hombres_r': 250, 'numero_mujeres_r': 250, 'edad_r': 'ADU', 'numero_partida': 3000, 'nombre_partida': 'Partida Modificado en POST', 'monto_partida': 6700.00, } self.client.post('/programa/editar/' + str(id), data=data_solo_meta_esperada) self.assertEqual(MetaPrograma.objects.first().numero_actividades, 7) def test_editar_nombre_incorrecto_form(self): # self.programa.save() self.guarda_programa_completo() id = Programa.objects.first().id data_solo_programa = { 'nombre': '', 'anio_ejercicio_fiscal': 1998, 'recurso_asignado': 50000, 'fuente': 'Nacional', 'tipo': 'MEN', 'status': 'ACT', 'tipo_programa_p': 'APO', 'numero_actividades': 7, 'numero_beneficiarios': 900, 'numero_hombres': 333, 'numero_mujeres': 444, 'edad': 'ADU', 'numero_actividades_r': 5, 'numero_beneficiarios_r': 500, 'numero_hombres_r': 250, 'numero_mujeres_r': 250, 'edad_r': 'ADU', 'numero_partida': 3000, 'nombre_partida': 'Partida Modificado', 'monto_partida': 6700.00, } self.client.post('/programa/editar/' + str(id), data=data_solo_programa) self.assertEqual(Programa.objects.first().nombre, 'Programa para Jóvenes 2') # Test para desactivar programa def test_boton_desactivar_programa_template(self): self.guarda_programa_completo() response = self.client.get('/programa/') id = Programa.objects.first().id # print(Programa.objects.first().status) self.assertInHTML( '<a href="/programa/desactivar/' + str(id) + '" class="btn btn-danger btn-sm">Desactivar</a>', response.rendered_content) def test_url_programa_desactivar_redirige(self): self.guarda_programa_completo() id = Programa.objects.first().id response = self.client.get('/programa/desactivar/' + str(id)) self.assertEqual(response.status_code, 302) def test_url_programa_desactivar_redirige_URL_correcta(self): self.guarda_programa_completo() id = Programa.objects.first().id response = self.client.get('/programa/desactivar/' + str(id)) self.assertEqual(response.url, '/programa/') def test_desactivar_programa_response(self): self.guarda_programa_completo() id = Programa.objects.first().id self.client.post('/programa/desactivar/' + str(id)) self.assertNotEqual(Programa.objects.first().status, 'Act') def test_desactivar_programa_ya_desactivado(self): programa = Programa( nombre='Programa para Jóvenes Tres', anio_ejercicio_fiscal=2022, recurso_asignado=54501, fuente='Federal', tipo='Mensual', status='Inactivo', ) programa.save() id = Programa.objects.first().id self.client.post('/programa/desactivar/' + str(id)) self.assertNotEqual(Programa.objects.first().status, 'Act') # Test para reactivar programa def test_boton_reactivar_programa_template(self): programa = Programa( nombre='Programa para Jóvenes Tres', anio_ejercicio_fiscal=2022, recurso_asignado=54501, fuente='Federal', tipo='Mensual', status='Inactivo', ) # self.guarda_programa_completo() programa.save() response = self.client.get('/programa/') id = Programa.objects.first().id self.assertInHTML( '<a href="/programa/reactivar/' + str(id) + '" class="btn btn-primary btn-sm">Reactivar</a>', response.rendered_content) def test_url_programa_reactivar_redirige(self): self.guarda_programa_completo() id = Programa.objects.first().id response = self.client.get('/programa/reactivar/' + str(id)) self.assertEqual(response.status_code, 302) def test_reactivar_programa_response(self): # self.guarda_programa_completo() programa = Programa( nombre='Programa para Jóvenes Cuatro', anio_ejercicio_fiscal=2053, recurso_asignado=54501, fuente='Federal', tipo='Mensual', status='Inactivo', ) programa.save() id = Programa.objects.first().id self.client.post('/programa/reactivar/' + str(id)) self.assertEqual(Programa.objects.first().status, 'ACT') def test_url_programa_reactivar_redirige_URL_correcta(self): self.guarda_programa_completo() id = Programa.objects.first().id response = self.client.get('/programa/reactivar/' + str(id)) self.assertEqual(response.url, '/programa/') def test_reactivar_usuario_ya_activado(self): programa = Programa( nombre='Programa para Jóvenes Tres', anio_ejercicio_fiscal=2022, recurso_asignado=54501, fuente='Federal', tipo='Mensual', status='Activo', ) programa.save() id = Programa.objects.first().id self.client.post('/programa/reactivar/' + str(id)) self.assertEqual(Programa.objects.first().status, 'Act') # Ahora se hace la prueba de llamada por el nombre # def test_nombre_url_programa_desactivar(self): # response = self.client.get(reverse('desactivar_programa')) # self.assertEqual(response.status_code, 200) def guarda_programa_completo(self): self.programa_com = Programa( nombre='Programa para Jóvenes 2', anio_ejercicio_fiscal=2020, recurso_asignado=54500, fuente='Federal', tipo='Mensual', status='Activo', ) self.programa_com.save() self.partida_com = Partida( numero_partida=3000, nombre_partida='Partida de Tres Mil prueba', monto_partida=6700.00, programa=self.programa_com, ) self.partida_com.save() self.metas_es_com = MetaPrograma( numero_actividades=5, numero_beneficiarios=100, numero_hombres=250, numero_mujeres=250, edad='Jóvenes', meta_esperada=True, programa=self.programa_com, ) self.metas_es_com.save() self.metas_re_com = MetaReal( numero_actividades_r=99, numero_beneficiarios_r=100, numero_hombres_r=250, numero_mujeres_r=250, edad_r='Jóvenes', meta_esperada_r=False, programa_r=self.programa_com, ) self.metas_re_com.save() return self.programa_com
class TestModels(TestCase): def setUp(self): self.programa = Programa( nombre='Programa para Jóvenes Zacatecanos', anio_ejercicio_fiscal=2019, recurso_asignado=600000, fuente='Gobierno', tipo='MEN', status='ACT', tipo_programa_p='APO', ) self.programa.save() self.partida = Partida( numero_partida=3000, nombre_partida='Partida tres mil', monto_partida=6700.00, programa=self.programa, ) self.partida.save() self.meta_programada = MetaPrograma(numero_actividades=5, numero_beneficiarios=100, numero_hombres=250, numero_mujeres=250, edad='ADU') self.meta_real = MetaReal(numero_actividades_r=5, numero_beneficiarios_r=700, numero_hombres_r=550, numero_mujeres_r=150, edad_r='NAD') def test_agrega_modelo_programa(self): self.assertEqual(Programa.objects.count(), 1) def test_return_object_programa(self): self.programa.full_clean() self.programa.save() self.assertEqual(self.programa.nombre, self.programa.return_nombre()) def test_return_object_partida(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.full_clean() self.partida.save() self.assertEqual(Partida.objects.first().__str__(), self.partida.nombre_partida.__str__()) def test_nombre_programa_es_requerido(self): self.programa.nombre = None with self.assertRaises(ValidationError): self.programa.full_clean() def test_nombre_programa_min_5_caracteres(self): self.programa.nombre = 'prog' with self.assertRaises(ValidationError): self.programa.full_clean() def test_nombre_programa_formato_incorrecto_caracteres_especiales(self): self.programa.nombre = '$$$$&%programa%&$$$' with self.assertRaises(ValidationError): self.programa.full_clean() def test_nombre_programa_caracteres_numericos_no_permitidos(self): self.programa.nombre = 'programa Niños 9999' with self.assertRaises(ValidationError): self.programa.full_clean() def test_max_longitud_nombre_programa(self): self.programa.nombre = 'Este es un nombre que es demasiado largo' * 2 self.assertLess(len(self.programa.nombre), 100) def test_longitud_nombre_excedida(self): self.programa.nombre = 'Este es un nombre que es demasiado largo' * 10 with self.assertRaises(ValidationError): self.programa.full_clean() def test_nombre_programa_primer_caracter_espacio_no_permitido(self): self.programa.nombre = ' programa Niños' with self.assertRaises(ValidationError): self.programa.full_clean() def test_nombre_programa_no_puede_estar_vacio(self): self.programa.nombre = '' with self.assertRaises(ValidationError): self.programa.full_clean() def test_anio_fiscal_programa_es_requerido(self): self.programa.anio_ejercicio_fiscal = None with self.assertRaises(ValidationError): self.programa.full_clean() def test_anio_fiscal_programa_no_puede_estar_vacio(self): self.programa.anio_ejercicio_fiscal = '' with self.assertRaises(ValidationError): self.programa.full_clean() def test_anio_fiscal_programa_no_acepta_caracteres_especiales(self): self.programa.anio_ejercicio_fiscal = '$$$7###/' with self.assertRaises(ValidationError): self.programa.full_clean() def test_anio_fiscal_programa_no_acepta_caracteres(self): self.programa.anio_ejercicio_fiscal = 'Año dos mil diez' with self.assertRaises(ValidationError): self.programa.full_clean() def test_anio_fiscal_programa_debe_tener_4_digitos(self): self.programa.anio_ejercicio_fiscal = 15 with self.assertRaises(ValidationError): self.programa.full_clean() def test_recurso_asignado_programa_es_requerido(self): self.programa.recurso_asignado = None with self.assertRaises(ValidationError): self.programa.full_clean() def test_recurso_asignado_programa_no_puede_estar_vacio(self): self.programa.recurso_asignado = '' with self.assertRaises(ValidationError): self.programa.full_clean() def test_recurso_asignado_programa_no_acepta_caracteres_especiales(self): self.programa.recurso_asignado = '$$=$' with self.assertRaises(ValidationError): self.programa.full_clean() def test_recurso_asignado_programa_no_acepta_caracteres(self): self.programa.recurso_asignado = 'Año dos mil diez 2017' with self.assertRaises(ValidationError): self.programa.full_clean() def test_recurso_asignado_programa_valor_minimo_de_0(self): self.programa.recurso_asignado = -56 with self.assertRaises(ValidationError): self.programa.full_clean() def test_recurso_asignado_programa_valor_maximo_de_6000000(self): self.programa.recurso_asignado = 6000000.01 with self.assertRaises(ValidationError): self.programa.full_clean() def test_fuente_programa_es_requerido(self): self.programa.fuente = None with self.assertRaises(ValidationError): self.programa.full_clean() def test_fuente_programa_no_puede_estar_vacio(self): self.programa.fuente = '' with self.assertRaises(ValidationError): self.programa.full_clean() def test_fuente_programa_no_caracteres_especiales(self): self.programa.fuente = '#%Secretaría de Economía%&' with self.assertRaises(ValidationError): self.programa.full_clean() def test_fuente_programa_no_caracteres_numericos(self): self.programa.fuente = 'Secretaría9' with self.assertRaises(ValidationError): self.programa.full_clean() def test_fuente_programa_no_debe_rebasar_100_caracteres(self): self.programa.fuente = 'A' * 120 with self.assertRaises(ValidationError): self.programa.full_clean() def test_fuente_programa_debe_ser_mayor_a_5_caracteres(self): self.programa.fuente = 'tres' with self.assertRaises(ValidationError): self.programa.full_clean() def test_fuente_programa_primer_caracter_sin_espacio(self): self.programa.fuente = ' Programa de Apoyo a Familias' with self.assertRaises(ValidationError): self.programa.full_clean() def test_tipo_programa_selecciona_opcion_invalida(self): self.programa.tipo = 'Esta opción no existe' with self.assertRaises(ValidationError): self.programa.full_clean() def test_tipo_programa_requerida(self): self.programa.tipo = None with self.assertRaises(ValidationError): self.programa.full_clean() def test_tipo_programa_no_vacio(self): self.programa.tipo = '' with self.assertRaises(ValidationError): self.programa.full_clean() def test_status_programa_no_vacio(self): self.programa.status = '' with self.assertRaises(ValidationError): self.programa.full_clean() def test_status_programa_requerido(self): self.programa.status = None with self.assertRaises(ValidationError): self.programa.full_clean() def test_status_programa_selecciona_opcion_invalida(self): self.programa.status = 'Status No Válido' with self.assertRaises(ValidationError): self.programa.full_clean() def test_tipo_programa_p_vacio(self): self.programa.tipo_programa_p = '' with self.assertRaises(ValidationError): self.programa.full_clean() def test_tipo_programa_p_requerido(self): self.programa.tipo_programa_p = None with self.assertRaises(ValidationError): self.programa.full_clean() def test_tipo_programa_p_selecciona_opcion_invalida(self): self.programa.tipo_programa_p = 'Opción inválida' with self.assertRaises(ValidationError): self.programa.full_clean() # Campos de Partida def test_numero_partida_vacia(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.numero_partida = '' with self.assertRaises(ValidationError): self.partida.full_clean() def test_numero_partida_requerida(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.numero_partida = None with self.assertRaises(ValidationError): self.partida.full_clean() def test_numero_partida_caracteres_no_especiales(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.numero_partida = '%&%&%' with self.assertRaises(ValidationError): self.partida.full_clean() def test_numero_partida_caracteres_no_permitidos(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.numero_partida = 'Dos mil setenta y cuatro' with self.assertRaises(ValidationError): self.partida.full_clean() def test_numero_partida_debe_tener_4_digitos(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.numero_partida = 915 with self.assertRaises(ValidationError): self.partida.full_clean() def test_nombre_partida_no_vacia(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.nombre_partida = '' with self.assertRaises(ValidationError): self.partida.full_clean() def test_nombre_partida_requerido(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.nombre_partida = None with self.assertRaises(ValidationError): self.partida.full_clean() def test_nombre_partida_no_caracteres_especiales(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.nombre_partida = '$#Especial#$' with self.assertRaises(ValidationError): self.partida.full_clean() def test_nombre_partida_no_numeros_permitidos(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.nombre_partida = 'Partida 3000' with self.assertRaises(ValidationError): self.partida.full_clean() def test_nombre_partida_con_espacio_al_inicio(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.nombre_partida = ' Partida correcta' with self.assertRaises(ValidationError): self.partida.full_clean() def test_nombre_partida_rebasa_cantidad_maxima_de_70_caracteres(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.nombre_partida = 'S' * 71 with self.assertRaises(ValidationError): self.partida.full_clean() def test_nombre_partida_es_menor_a_cantidad_minima_de_5_caracteres(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.nombre_partida = 'Nom' with self.assertRaises(ValidationError): self.partida.full_clean() def test_monto_partida_requerido(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.monto_partida = None with self.assertRaises(ValidationError): self.partida.full_clean() def test_monto_partida_no_vacio(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.monto_partida = '' with self.assertRaises(ValidationError): self.partida.full_clean() def test_monto_partida_no_caracteres_especiales(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.monto_partida = '$$$$###12' with self.assertRaises(ValidationError): self.partida.full_clean() def test_monto_partida_no_caracteres_permitidos(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.monto_partida = 'doscientos' with self.assertRaises(ValidationError): self.partida.full_clean() def test_monto_partida_no_mayor_a_6000000(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.monto_partida = 9000000 with self.assertRaises(ValidationError): self.partida.full_clean() def test_monto_partida_no_menor_a_0(self): self.programa.full_clean() self.programa.save() self.partida.programa = self.programa self.partida.monto_partida = -15 with self.assertRaises(ValidationError): self.partida.full_clean() # Metas programadas def test_meta_programada_act_no_vacia(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_actividades = '' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_act_requerido(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_actividades = None with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_act_no_caracteres_especiales(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_actividades = '$$$$$' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_act_no_caracteres(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_actividades = 'Numero de actividades' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_act_valor_minimo_de_0(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_actividades = -1 with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_act_valor_maximo_de_100(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_actividades = 102 with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_ben_vacio(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_beneficiarios = '' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_ben_requerido(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_beneficiarios = None with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_ben_no_acepta_caracteres_especiales(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_beneficiarios = '$###$' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_ben_no_acepta_caracteres(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_beneficiarios = 'beneficiarios' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_ben_no_debe_ser_menor_a_0(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_beneficiarios = -12 with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_ben_no_debe_ser_mayor_a_9000000(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_beneficiarios = 9000001 with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_hom_vacio(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_hombres = '' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_hom_requerido(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_hombres = None with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_hom_no_caracteres_especiales(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_hombres = '$##$$##' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_hom_no_caracteres(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_hombres = 'quinientos' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_hom_valor_minimo_de_0(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_hombres = -13 with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_hom_valor_minimo_de_9000000(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_hombres = 9000001 with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_muj_vacio(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_mujeres = '' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_muj_requerido(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_mujeres = None with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_muj_no_caracteres_especiales(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_mujeres = '$##$$##' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_muj_no_caracteres(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_mujeres = 'quinientos' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_muj_valor_minimo_de_0(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_mujeres = -13 with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_muj_valor_minimo_de_9000000(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.numero_mujeres = 9000001 with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_edad_opcion_incorrecta(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.edad = 'AME' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_edad_no_vacio(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.edad = '' with self.assertRaises(ValidationError): self.meta_programada.full_clean() def test_meta_programada_edad_requerido(self): self.programa.full_clean() self.programa.save() self.meta_programada.programa = self.programa self.meta_programada.edad = None with self.assertRaises(ValidationError): self.meta_programada.full_clean() # Metas Reales def test_meta_real_act_no_vacia(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_actividades_r = '' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_act_requerido(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_actividades_r = None with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_act_no_caracteres_especiales(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_actividades_r = '$$$$$' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_act_no_caracteres(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_actividades_r = 'Numero de actividades' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_act_valor_minimo_de_0(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_actividades_r = -1 with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_act_valor_maximo_de_100(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_actividades_r = 102 with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_ben_vacio(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_beneficiarios_r = '' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_ben_requerido(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_beneficiarios_r = None with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_ben_no_acepta_caracteres_especiales(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_beneficiarios_r = '$###$' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_ben_no_acepta_caracteres(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_beneficiarios_r = 'beneficiarios' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_ben_no_debe_ser_menor_a_0(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_beneficiarios_r = -12 with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_ben_no_debe_ser_mayor_a_9000000(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_beneficiarios_r = 9000001 with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_hom_vacio(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_hombres_r = '' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_hom_requerido(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_hombres_r = None with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_hom_no_caracteres_especiales(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_hombres_r = '$##$$##' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_hom_no_caracteres(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_hombres_r = 'quinientos' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_hom_valor_minimo_de_0(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_hombres_r = -13 with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_hom_valor_minimo_de_9000000(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_hombres_r = 9000001 with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_muj_vacio(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_mujeres_r = '' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_muj_requerido(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_mujeres_r = None with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_muj_no_caracteres_especiales(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_mujeres_r = '$##$$##' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_muj_no_caracteres(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_mujeres_r = 'quinientos' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_muj_valor_minimo_de_0(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_mujeres_r = -13 with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_muj_valor_minimo_de_9000000(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.numero_mujeres_r = 9000001 with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_edad_r_opcion_incorrecta(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.edad_r = 'AUD' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_edad_r_no_vacio(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.edad_r = '' with self.assertRaises(ValidationError): self.meta_real.full_clean() def test_meta_real_edad_r_requerido(self): self.programa.full_clean() self.programa.save() self.meta_real.programa_r = self.programa self.meta_real.edad_r = None with self.assertRaises(ValidationError): self.meta_real.full_clean() # Fail @skip def test_nombre_programa_nombre_requerido(self): self.programa.nombre = None try: self.programa.full_clean() except ValidationError as ex: message = str(ex.message_dict['nombre'][0]) self.assertEqual(message, LONGITUD_MAXIMA) def test_return_object_partida_correcto(self): self.partida.full_clean() self.partida.save() self.assertEqual(self.partida.nombre_partida, self.partida.__str__()) # Fail @skip def test_anio_ejercicio_fiscal_requerido(self): self.programa.anio_ejercicio_fiscal = None try: self.programa.full_clean() except ValidationError as ex: message = str(ex.message_dict['anio_ejercicio_fiscal'][0]) self.assertEqual(message, LONGITUD_MAXIMA) def test_prueba_texto_de_error_nombre_programa(self): self.programa.nombre = 'Este es un nombre que es demasiado largo.' * 11 try: self.programa.full_clean() except ValidationError as ex: message = str(ex.message_dict['nombre'][0]) self.assertEqual(message, LONGITUD_MAXIMA) def test_insercion_del_programa(self): self.programa.save() self.assertEqual(Programa.objects.all()[0], self.programa)
class SubprogramaViewTests(TestCase): def setUp(self): self.programa = Programa( nombre='Programa para Jóvenes Zacatecanos', anio_ejercicio_fiscal=2019, recurso_asignado=600000, fuente='Gobierno', tipo='MEN', status='ACT', tipo_programa_p='APO', ) self.programa.save() self.partida = Partida( numero_partida=3000, nombre_partida='Partida 1 de 3000', monto_partida=6700.00, programa=self.programa, ) self.partida.save() self.usuario = User(username="******", email="*****@*****.**", password="******", is_superuser=True) self.usuario.save() self.administrativo = Administrativo(nombre="usuario de prueba", primer_apellido='LOL', segundo_apellido='JJ', telefono='4949412345', foto='foto.png', usuario=self.usuario) self.administrativo.save() self.subp = test_models.SubprogramaModelTests.creaDefaultSubprograma( self) self.asigna_permisos_login() ''' Vista Agregar subprograma ''' def test_vistaAgregar_url(self): response = self.client.get('/subprograma/nuevo') self.assertEqual(response.status_code, 200) def test_vistaAgregar_nombre_url(self): response = self.client.get(reverse('nuevo_subprograma')) self.assertEqual(response.status_code, 200) def test_vistaAregar_html_correcto(self): response = self.client.get('/subprograma/nuevo') self.assertTemplateUsed(response, 'actividades/actividad_form.html') def test_vistaAregar_envio_datos_a_lista_subprograma(self): response = self.client.get('/subprograma/') self.assertEqual(response.context['object_list'][0].nombre, 'Subprograma De Referencia') ''' Vista Editar subprograma ''' def test_vistaEditar_url(self): response = self.client.get(f'/subprograma/editar/{self.subp.id}') self.assertEqual(response.status_code, 200) def test_vistaEditar_nombre_url(self): response = self.client.get( reverse('editar_subprograma', args=[self.subp.id])) self.assertEqual(response.status_code, 200) def test_vistaEditar_html_correcto(self): response = self.client.get(f'/subprograma/editar/{self.subp.id}') self.assertTemplateUsed(response, 'actividades/actividad_form.html') ''' Vista Detalles/Ver subprograma ''' def test_vistaVer_url(self): response = self.client.get(f'/subprograma/ver/{self.subp.id}') self.assertEqual(response.status_code, 200) def test_vistaVer_nombre_url(self): response = self.client.get( reverse('ver_subprograma', args=[self.subp.id])) self.assertEqual(response.status_code, 200) def test_vistaVer_html_correcto(self): response = self.client.get(f'/subprograma/ver/{self.subp.id}') self.assertTemplateUsed(response, 'actividades/actividad_detail.html') ''' Vista lista subprograma ''' def test_vistaLista_url(self): response = self.client.get('/subprograma/') self.assertEqual(response.status_code, 200) def test_vistaLista_nombre_url(self): response = self.client.get(reverse('lista_subprograma')) self.assertEqual(response.status_code, 200) def test_vistaLista_html_correcto(self): response = self.client.get('/subprograma/') self.assertTemplateUsed(response, 'actividades/actividad_list.html') def test_vistaLista_carga_datos(self): response = self.client.get('/subprograma/') self.assertIn('object_list', response.context) def test_vistaLista_envio_datos_a_Ver_subprograma(self): response = self.client.get(f'/subprograma/ver/{self.subp.id}') self.assertEqual(response.context['object'].nombre, 'Subprograma De Referencia') def test_vistaLista_envio_datos_a_Editar_subprograma(self): response = self.client.get(f'/subprograma/editar/{self.subp.id}') self.assertEqual(response.context['object'].nombre, 'Subprograma De Referencia') def asigna_permisos_login(self): user = User.objects.create_user(username='******', password='******', email='*****@*****.**', is_staff=True) new_group, created = Group.objects.get_or_create( name='director_operativo') new_subprograma, created = Group.objects.get_or_create( name='encargado_subprograma') new_group.permissions.add( Permission.objects.get(codename='add_subprograma')) new_group.permissions.add( Permission.objects.get(codename='view_subprograma')) new_group.permissions.add( Permission.objects.get(codename='change_subprograma')) user.groups.add(new_group) self.client.login(username='******', password='******')
def setUp(self, nombre="Programa para Jóvenes Zacatecanos", anio_ejercicio_fiscal=2019, recurso_asignado=600000, fuente='Trimestral'): self.programa = Programa( nombre='Programa para Jóvenes Zacatecanos', anio_ejercicio_fiscal=2019, recurso_asignado=600000, fuente='Gobierno', tipo='MEN', status='ACT', tipo_programa_p='APO', ) self.programa_data = { 'nombre': nombre, 'anio_ejercicio_fiscal': anio_ejercicio_fiscal, 'recurso_asignado': recurso_asignado, 'fuente': fuente, 'tipo': 'MEN', 'status': 'ACT', 'tipo_programa_p': 'APO' } self.data = { 'nombre': nombre, 'anio_ejercicio_fiscal': anio_ejercicio_fiscal, 'recurso_asignado': recurso_asignado, 'fuente': fuente, 'tipo': 'MEN', 'status': 'ACT', 'numero_actividades_mp': 6, 'numero_beneficiarios_mp': 500, 'numero_hombres_mp': 250, 'numero_mujeres_mp': 250, 'edad_mp': 'ADU', 'numero_actividades_mr': 5, 'numero_beneficiarios_mr': 5200, 'numero_hombres_mr': 950, 'numero_mujeres_mr': 111, 'edad_mr': 'ADU', 'tipo_programa_p': 'APO' } self.data_partida = { 'numero_partida': 3000, 'nombre_partida': 'Partida tres mil', 'monto_partida': 6700.00, 'programa': self.programa.id } self.data_meta = { 'numero_actividades': 5, 'numero_beneficiarios': 490, 'numero_hombres': 245, 'numero_mujeres': 245, 'edad': 'JOV', 'programa': self.programa.id } self.data_meta_real = { 'numero_actividades_r': 10, 'numero_beneficiarios_r': 1490, 'numero_hombres_r': 2451, 'numero_mujeres_r': 2452, 'edad_r': 'JOV', 'programa_r': self.programa.id }
class TestForms(TestCase): def setUp(self, nombre="Programa para Jóvenes Zacatecanos", anio_ejercicio_fiscal=2019, recurso_asignado=600000, fuente='Trimestral'): self.programa = Programa( nombre='Programa para Jóvenes Zacatecanos', anio_ejercicio_fiscal=2019, recurso_asignado=600000, fuente='Gobierno', tipo='MEN', status='ACT', tipo_programa_p='APO', ) self.programa_data = { 'nombre': nombre, 'anio_ejercicio_fiscal': anio_ejercicio_fiscal, 'recurso_asignado': recurso_asignado, 'fuente': fuente, 'tipo': 'MEN', 'status': 'ACT', 'tipo_programa_p': 'APO' } self.data = { 'nombre': nombre, 'anio_ejercicio_fiscal': anio_ejercicio_fiscal, 'recurso_asignado': recurso_asignado, 'fuente': fuente, 'tipo': 'MEN', 'status': 'ACT', 'numero_actividades_mp': 6, 'numero_beneficiarios_mp': 500, 'numero_hombres_mp': 250, 'numero_mujeres_mp': 250, 'edad_mp': 'ADU', 'numero_actividades_mr': 5, 'numero_beneficiarios_mr': 5200, 'numero_hombres_mr': 950, 'numero_mujeres_mr': 111, 'edad_mr': 'ADU', 'tipo_programa_p': 'APO' } self.data_partida = { 'numero_partida': 3000, 'nombre_partida': 'Partida tres mil', 'monto_partida': 6700.00, 'programa': self.programa.id } self.data_meta = { 'numero_actividades': 5, 'numero_beneficiarios': 490, 'numero_hombres': 245, 'numero_mujeres': 245, 'edad': 'JOV', 'programa': self.programa.id } self.data_meta_real = { 'numero_actividades_r': 10, 'numero_beneficiarios_r': 1490, 'numero_hombres_r': 2451, 'numero_mujeres_r': 2452, 'edad_r': 'JOV', 'programa_r': self.programa.id } def test_si_el_formulario_de_programa_es_valido(self): form = ProgramaForm(self.data) self.assertTrue(form.is_valid()) def test_si_el_formulario_de_partida_es_valido(self): form = PartidaForm(self.data_partida) self.assertTrue(form.is_valid()) def test_si_el_formulario_de_metas_es_valido(self): form = MetaForm(self.data_meta) self.assertTrue(form.is_valid()) def test_si_el_formulario_de_programa_es_invalido(self): self.data['nombre'] = 'funcione cada vez más' * 15 form = ProgramaForm(self.data) self.assertFalse(form.is_valid()) def test_si_el_formulario_de_partidas_es_invalido(self): self.data_partida['numero_partida'] = 'Esto no es un número' form = PartidaForm(self.data_partida) self.assertFalse(form.is_valid()) def test_max_longitud_nombre(self): self.data['nombre'] = 'Este es un nombre que es demasiado largo' * 15 form = ProgramaForm(self.data) self.assertEqual(form.errors['nombre'], [LONGITUD_MAXIMA]) def test_nombre_programa_vacio(self): self.data['nombre'] = '' form = ProgramaForm(self.data) self.assertFalse(form.is_valid()) def test_min_longitud_nombre(self): self.data['nombre'] = 'Este' form = ProgramaForm(self.data) self.assertEqual(form.errors['nombre'], [LONGITUD_MINIMA]) def test_anio_ejercicio_fiscal_vacio(self): self.data['anio_ejercicio_fiscal'] = '' form = ProgramaForm(self.data) self.assertFalse(form.is_valid()) def test_anio_ejercicio_fiscal_valor_numerico(self): self.data['anio_ejercicio_fiscal'] = 'letra' form = ProgramaForm(self.data) self.assertEqual(form.errors['anio_ejercicio_fiscal'], [FORMATO_NUMERO_INCORRECTO]) def test_recurso_asignado_vacio(self): self.data['recurso_asignado'] = None form = ProgramaForm(self.data) self.assertFalse(form.is_valid()) def test_valor_minimo_recurso_asignado(self): self.data['recurso_asignado'] = -10 form = ProgramaForm(self.data) self.assertEqual(form.errors['recurso_asignado'], [VALOR_MINIMO]) def test_valor_maximo_recurso_asignado(self): self.data['recurso_asignado'] = 6000001 form = ProgramaForm(self.data) self.assertEqual(form.errors['recurso_asignado'], [VALOR_MAXIMO]) def test_formulario_tiene_label_de_nombre_de_programa(self): form = ProgramaForm() self.assertIn('<label for="id_nombre">', form.as_p()) # Test para formulario de programa def test_programa_form_valido(self): form = ProgramaForm(self.programa_data) self.assertTrue(form.is_valid()) def test_programa_nombre_vacio(self): self.programa_data['nombre'] = '' form = ProgramaForm(self.programa_data) self.assertFalse(form.is_valid()) def test_programa_anio_ejercicio_no_de_4_digitos(self): self.programa_data['anio_ejercicio_fiscal'] = 16 form = ProgramaForm(self.programa_data) self.assertFalse(form.is_valid()) def test_programa_recurso_asignado_fuera_de_rango(self): self.programa_data['recurso_asignado'] = -6000005 form = ProgramaForm(self.programa_data) self.assertFalse(form.is_valid()) def test_programa_fuente_sobrepasa_caracteres(self): self.programa_data['fuente'] = 'fuente' * 19 form = ProgramaForm(self.programa_data) self.assertFalse(form.is_valid()) def test_programa_tipo_invalido(self): self.programa_data['tipo'] = 'Este tipo es inválido' form = ProgramaForm(self.programa_data) self.assertFalse(form.is_valid()) def test_programa_status_no_requerido(self): self.programa_data['status'] = '' form = ProgramaForm(self.programa_data) self.assertFalse(form.is_valid()) def test_programa_tipo_programa_invalido(self): self.programa_data['tipo_programa_p'] = 'Yo no existo' form = ProgramaForm(self.programa_data) self.assertFalse(form.is_valid()) # Test para formulario de partida def test_partida_form_es_valido(self): self.programa.save() form = PartidaForm(self.data_partida) self.assertTrue(form.is_valid()) def test_partida_numero_partida_no_es_numero(self): self.programa.save() self.data_partida['numero_partida'] = 'No soy un número' form = PartidaForm(self.data_partida) self.assertFalse(form.is_valid()) def test_partida_nombre_partida_es_invalido(self): self.programa.save() self.data_partida['nombre_partida'] = 'Partida de 3000' form = PartidaForm(self.data_partida) self.assertFalse(form.is_valid()) def test_partida_monto_partida_esta_vacio(self): self.programa.save() self.data_partida['monto_partida'] = '' form = PartidaForm(self.data_partida) self.assertFalse(form.is_valid()) # Test para formulario de metas programadas def test_meta_programada_form_es_valido(self): self.programa.save() form = MetaForm(self.data_meta) self.assertTrue(form.is_valid()) def test_meta_programada_act_no_es_numero(self): self.programa.save() self.data_meta['numero_actividades'] = 'No soy un número' form = MetaForm(self.data_meta) self.assertFalse(form.is_valid()) def test_meta_programada_ben_esta_vacio(self): self.programa.save() self.data_meta['numero_beneficiarios'] = '' form = MetaForm(self.data_meta) self.assertFalse(form.is_valid()) def test_meta_programada_hom_no_alcanza_limite_minimo(self): self.programa.save() self.data_meta['numero_hombres'] = -12 form = MetaForm(self.data_meta) self.assertFalse(form.is_valid()) def test_meta_programada_muj_vacio(self): self.programa.save() self.data_meta['numero_mujeres'] = '' form = MetaForm(self.data_meta) self.assertFalse(form.is_valid()) def test_meta_programada_rango_edad_no_valida(self): self.programa.save() self.data_meta['edad'] = 'No soy una opción válida' form = MetaForm(self.data_meta) self.assertFalse(form.is_valid()) # Test para formulario de metas reales def test_meta_real_form_es_valido(self): self.programa.save() form = MetaRealForm(self.data_meta_real) self.assertTrue(form.is_valid()) def test_meta_real_act_no_es_numero(self): self.programa.save() self.data_meta_real['numero_actividades_r'] = 'No soy un número' form = MetaRealForm(self.data_meta_real) self.assertFalse(form.is_valid()) def test_meta_real_ben_esta_vacio(self): self.programa.save() self.data_meta_real['numero_beneficiarios_r'] = '' form = MetaRealForm(self.data_meta_real) self.assertFalse(form.is_valid()) def test_meta_real_hom_no_alcanza_limite_minimo(self): self.programa.save() self.data_meta_real['numero_hombres_r'] = -12 form = MetaRealForm(self.data_meta_real) self.assertFalse(form.is_valid()) def test_meta_real_muj_vacio(self): self.programa.save() self.data_meta_real['numero_mujeres_r'] = '' form = MetaRealForm(self.data_meta_real) self.assertFalse(form.is_valid()) def test_meta_real_rango_edad_no_valida(self): self.programa.save() self.data_meta_real['edad_r'] = 'No soy una opción válida' form = MetaRealForm(self.data_meta_real) self.assertFalse(form.is_valid())