picture-display/src/pictures/tests/test_api.py

53 lines
1.6 KiB
Python

import json
import pytest
from django.test import Client
from django.urls import reverse
from pictures.models import Contact, Message
from pictures.views import STATUS_OK
@pytest.mark.django_db
@pytest.mark.parametrize("content", ["This is a test message", ""])
def test_post_message_existing_contact(client: Client, contact: Contact, content: str):
assert Message.objects.count() == 0
res = _post_message(client, str(contact.phone_number), content)
assert res.status_code == 201
data = res.json()
message = Message.objects.first()
assert data["status"] == STATUS_OK
assert data["data"]["id"] == message.pk
assert message.sender == contact
assert message.content == content
def _post_message(client: Client, phone_number: str, content: str):
res = client.post(
reverse("api-create-message"),
data=json.dumps(
{
"phone_number": phone_number,
"content": content,
}
),
content_type="application/json",
)
return res
@pytest.mark.django_db
@pytest.mark.parametrize("content", ["This is a test message", ""])
def test_post_message_new_contact(client: Client, content: str):
assert Message.objects.count() == 0
phone_number = "+33622222222"
res = _post_message(client, phone_number, content)
data = res.json()
assert res.status_code == 201
message = Message.objects.first()
assert data["status"] == STATUS_OK
assert data["data"]["id"] == message.pk
assert message.sender.phone_number == phone_number
assert message.sender.display_name == ""
assert message.content == content