Skip to content
Snippets Groups Projects
Commit abbfab16 authored by Deaktivert bruker's avatar Deaktivert bruker
Browse files

greg.tests: convert test_api_person to idiomatic pytest style

Literal translation of greg/tests/test_api_person.py into pytest
style.  This could certainly be improved.

Fixes: GREG-14
parent 97357b40
No related branches found
No related tags found
1 merge request!11greg.tests: migrate to pytest test runner
import pytest
from django.contrib.auth import get_user_model
from rest_framework import status
from rest_framework.authtoken.models import Token
from rest_framework.reverse import reverse
from rest_framework.test import (
APIClient,
APITestCase,
)
from rest_framework.status import HTTP_200_OK
from rest_framework.test import APIClient
from greg.models import Person
class GregAPITestCase(APITestCase):
def setUp(self):
self.client = self.get_token_client()
def get_token_client(self, username="test") -> APIClient:
self.user, _ = get_user_model().objects.get_or_create(username=username)
token, _ = Token.objects.get_or_create(user=self.user)
client = APIClient()
client.credentials(HTTP_AUTHORIZATION="Token {}".format(token.key))
return client
class PersonTestData(GregAPITestCase):
def setUp(self):
super().setUp()
self.person_foo_data = dict(
first_name="Foo",
last_name="Foo",
date_of_birth="2000-01-27",
email="test@example.org",
mobile_phone="123456788",
)
self.person_bar_data = dict(
first_name="Bar",
last_name="Bar",
date_of_birth="2000-07-01",
email="test2@example.org",
mobile_phone="123456789",
)
self.person_foo = Person.objects.create(**self.person_foo_data)
self.person_bar = Person.objects.create(**self.person_bar_data)
class PersonAPITestCase(PersonTestData):
def test_get_person(self):
url = reverse("person-detail", kwargs={"id": self.person_foo.id})
response = self.client.get(url)
data = response.json()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(data.get("id"), self.person_foo.id)
self.assertEqual(data.get("first_name"), self.person_foo.first_name)
self.assertEqual(data.get("last_name"), self.person_foo.last_name)
def test_persons(self):
url = reverse("person-list")
response = self.client.get(url)
data = response.json()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(2, len(data["results"]))
@pytest.fixture
def client() -> APIClient:
user, _ = get_user_model().objects.get_or_create(username="test")
token, _ = Token.objects.get_or_create(user=user)
client = APIClient()
client.credentials(HTTP_AUTHORIZATION=f"Token {token.key}")
return client
@pytest.fixture
def person_foo() -> Person:
return Person.objects.create(
first_name="Foo",
last_name="Foo",
date_of_birth="2001-01-27",
email="test@example.org",
mobile_phone="123456788",
)
@pytest.fixture
def person_bar() -> Person:
return Person.objects.create(
first_name="Bar",
last_name="Bar",
date_of_birth="2000-07-01",
email="test2@example.org",
mobile_phone="123456789",
)
@pytest.mark.django_db
def test_get_person(client, person_foo):
resp = client.get(reverse("person-detail", kwargs={"id": person_foo.id}))
assert resp.status_code == HTTP_200_OK
data = resp.json()
assert data.get("id") == person_foo.id
assert data.get("first_name") == person_foo.first_name
assert data.get("last_name") == person_foo.last_name
@pytest.mark.django_db
def test_persons(client, person_foo, person_bar):
resp = client.get(reverse("person-list"))
assert resp.status_code == HTTP_200_OK
data = resp.json()
assert len(data["results"]) == 2
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment