def test_siguiente_manda_a_parcial_si_es_requerido_sin_scheduler( db, client, setup_groups, settings): settings.MIN_COINCIDENCIAS_CARGAS = 1 m1 = MesaFactory() a1 = AttachmentFactory(mesa=m1, status=Identificacion.STATUS.identificada) m2 = MesaFactory() a2 = AttachmentFactory(mesa=m2, status=Identificacion.STATUS.identificada) mc1 = MesaCategoriaFactory(categoria__requiere_cargas_parciales=False, coeficiente_para_orden_de_carga=1, mesa=m1) mc2 = MesaCategoriaFactory(categoria__requiere_cargas_parciales=True, coeficiente_para_orden_de_carga=2, mesa=m2) fiscales = FiscalFactory.create_batch(2) # Da mc1 porque es más prioritaria. fiscal_client = fiscal_client_from_fiscal(client, fiscales[0]) response = fiscal_client.get(reverse('siguiente-accion')) assert response.status_code == HTTPStatus.FOUND assert response.url == reverse('carga-total', args=[mc1.id]) # Cerramos la sesión para que el client pueda reutilizarse sin que nos diga # que ya estamos logueados. fiscal_client.logout() # mc1 fue asignada, ahora da mc2 fiscal_client = fiscal_client_from_fiscal(client, fiscales[1]) response = fiscal_client.get(reverse('siguiente-accion')) assert response.status_code == HTTPStatus.FOUND assert response.url == reverse('carga-parcial', args=[mc2.id])
def test_referidos_post_confirma_conoce(fiscal_client, admin_user): fiscal = admin_user.fiscal referidos_ids = [ f.id for f in FiscalFactory.create_batch(2, referente=fiscal) ] assert fiscal.referidos.filter(referencia_confirmada=True).count() == 0 response = fiscal_client.post(reverse('referidos'), data={ 'conozco': '', 'referido': referidos_ids }) assert response.status_code == 200 assert fiscal.referidos.filter(referencia_confirmada=True).count() == 2
def test_enviar_email_get(fiscal_client, admin_user): fiscales_ids = ','.join(str(f.id) for f in FiscalFactory.create_batch(2)) url = f"{reverse('enviar-email')}?ids={fiscales_ids}" session = fiscal_client.session session.update({ 'enviar_email_asunto': 'foo', 'enviar_email_template': '{{ foo }}', }) session.save() response = fiscal_client.get(url) assert response.status_code == 200 form = response.context['form'] assert isinstance(form, EnviarEmailForm) assert 'Enviar Email a 2 fiscales' in response.content.decode('utf8') assert form.initial['asunto'] == 'foo' assert form.initial['template'] == '{{ foo }}'
def test_referidos_muestra_link_y_referidos(fiscal_client, admin_user): fiscal = admin_user.fiscal referidos_ids = { f.id for f in FiscalFactory.create_batch(2, referente=fiscal) } # otros fiscales no afectan FiscalFactory(referente=FiscalFactory()) assert set(fiscal.referidos.values_list('id', flat=True)) == referidos_ids response = fiscal_client.get(reverse('referidos')) assert response.status_code == 200 content = response.content.decode('utf8') form = response.context['form'] assert isinstance(form, ReferidoForm) assert form.initial['url'] == fiscal.ultimo_codigo_url() assert set(response.context['referidos'].values_list( 'id', flat=True)) == referidos_ids assert str(response.context['referidos'][0]) in content assert str(response.context['referidos'][1]) in content
def test_siguiente_accion_redirige_a_cargar_resultados_sin_scheduler( db, settings, client, setup_groups): c1 = CategoriaFactory() c2 = CategoriaFactory() m1 = MesaFactory(categorias=[c1]) IdentificacionFactory( mesa=m1, status='identificada', source=Identificacion.SOURCES.csv, ) m2 = MesaFactory(categorias=[c1, c2]) assert MesaCategoria.objects.count() == 3 IdentificacionFactory( mesa=m2, status='identificada', source=Identificacion.SOURCES.csv, ) # Ambas consolidadas vía csv. consumir_novedades_identificacion() # Los fiscales que voy a usar. fiscales = FiscalFactory.create_batch(20) indice_fiscal = 0 m1c1 = MesaCategoria.objects.get(mesa=m1, categoria=c1) for i in range(settings.MIN_COINCIDENCIAS_CARGAS): fiscal_client = fiscal_client_from_fiscal(client, fiscales[indice_fiscal]) indice_fiscal += 1 response = fiscal_client.get(reverse('siguiente-accion')) assert response.status_code == HTTPStatus.FOUND assert response.url == reverse('carga-total', args=[m1c1.id]) # Cerramos la sesión para que el client pueda reutilizarse sin que nos diga # que ya estamos logueados. fiscal_client.logout() # Como m1c1 ya fue pedida por suficientes fiscales, # se pasa a la siguiente mesacategoría. m2c1 = MesaCategoria.objects.get(mesa=m2, categoria=c1) for i in range(settings.MIN_COINCIDENCIAS_CARGAS): fiscal_client = fiscal_client_from_fiscal(client, fiscales[indice_fiscal]) indice_fiscal += 1 response = fiscal_client.get(reverse('siguiente-accion')) assert response.status_code == HTTPStatus.FOUND assert response.url == reverse('carga-total', args=[m2c1.id]) fiscal_client.logout() # Ahora la tercera. m2c2 = MesaCategoria.objects.get(mesa=m2, categoria=c2) for i in range(settings.MIN_COINCIDENCIAS_CARGAS): fiscal_client = fiscal_client_from_fiscal(client, fiscales[indice_fiscal]) indice_fiscal += 1 response = fiscal_client.get(reverse('siguiente-accion')) assert response.status_code == HTTPStatus.FOUND assert response.url == reverse('carga-total', args=[m2c2.id]) fiscal_client.logout() # Ya no hay actas nuevas, vuelta a empezar. fiscal_client = fiscal_client_from_fiscal(client, fiscales[indice_fiscal]) indice_fiscal += 1 response = fiscal_client.get(reverse('siguiente-accion')) assert response.status_code == HTTPStatus.FOUND assert response.url == reverse('carga-total', args=[m1c1.id]) fiscal_client.logout() # Se libera una. m2c2.desasignar_a_fiscal() fiscal_client = fiscal_client_from_fiscal(client, fiscales[indice_fiscal]) indice_fiscal += 1 response = fiscal_client.get(reverse('siguiente-accion')) assert response.status_code == HTTPStatus.FOUND assert response.url == reverse('carga-total', args=[m2c2.id])
def test_fiscal_crea_codigo(db): FiscalFactory.create_batch(4) assert CodigoReferido.objects.count() == 4