Add API endpoint to create message
parent
12f1f6849a
commit
c7fe28e9dc
@ -0,0 +1,26 @@
|
||||
# Generated by Django 3.1.5 on 2021-02-13 16:45
|
||||
|
||||
import phonenumber_field.modelfields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("pictures", "0005_auto_20210124_1644"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="contact",
|
||||
name="display_name",
|
||||
field=models.CharField(blank=True, max_length=250),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="contact",
|
||||
name="phone_number",
|
||||
field=phonenumber_field.modelfields.PhoneNumberField(
|
||||
max_length=128, region=None, unique=True
|
||||
),
|
||||
),
|
||||
]
|
@ -1,3 +0,0 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
@ -0,0 +1,12 @@
|
||||
import pytest
|
||||
|
||||
from pictures.models import Contact
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@pytest.mark.django_db
|
||||
def contact():
|
||||
return Contact.objects.create(
|
||||
phone_number="+33611111111",
|
||||
display_name="Test contact",
|
||||
)
|
@ -0,0 +1,52 @@
|
||||
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
|
Loading…
Reference in New Issue