test_personas.py 2.22 KB
import pytest
from rest_framework.test import APIClient

from core.tests.fixtures_usuario import create_user, crear_permiso_usuario

from persona.models import Persona
from persona.tests.fixtures import crear_personas


@pytest.mark.django_db
def test_vista_lista_personas(crear_personas):
    client = APIClient()
    response = client.get('/persona/lista/')

    assert response.status_code == 200

    queryset_personas = response.context['personas']
    assert queryset_personas.count() == 3
    assert queryset_personas[0].nombre == 'Cecilia'
    assert queryset_personas[1].nombre == 'David'
    assert queryset_personas[2].nombre == 'Santiago'


@pytest.mark.django_db
def test_vista_lista_personas_por_edad(crear_personas):
    client = APIClient()
    response = client.get(f'/persona/lista/?edad=25')

    assert response.status_code == 200

    queryset_personas = response.context['personas']
    assert queryset_personas.count() == 1
    assert queryset_personas[0].nombre == 'David'


@pytest.mark.django_db
def test_vista_creacion_persona_autorizado():
    usuario = create_user(username='Cecilia', is_staff=True)

    permiso_crear_personas = crear_permiso_usuario(
        codename='add_persona',
        name='Puede agregar una persona',
        app_name='persona',
        model_name='persona')

    usuario.user_permissions.add(permiso_crear_personas,)

    client = APIClient()
    client.login(username='Cecilia', password='password')

    data = {
        'nombre': 'Ruben',
        'apellido': 'Lopez',
        'documento_identidad': '23789475',
    }
    response = client.post(f'/persona/creacion/', data=data)

    assert response.status_code == 302
    assert Persona.objects.filter(documento_identidad='23789475').exists()


@pytest.mark.django_db
def test_vista_creacion_persona_no_autorizado():
    usuario = create_user(username='Cecilia', is_staff=True)

    client = APIClient()
    client.login(username='Cecilia', password='password')

    data = {
        'nombre': 'Ruben',
        'apellido': 'Lopez',
        'documento_identidad': '23789475',
    }
    response = client.post(f'/persona/creacion/', data=data)

    assert response.status_code == 403
    assert not Persona.objects.filter(documento_identidad='23789475').exists()