From f9c6853e29b9fbbb06705677f9eaa0a6c563d8d1 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste <bleme@pm.me> Date: Mon, 18 Feb 2019 15:12:00 +0100 Subject: [PATCH] update: add test reproducing the issue 85 --- djangoldp/tests/models.py | 2 ++ djangoldp/tests/tests_update.py | 63 +++++++++++++++++++++++++++++++-- 2 files changed, 62 insertions(+), 3 deletions(-) diff --git a/djangoldp/tests/models.py b/djangoldp/tests/models.py index dab3dc1b..13a0aedf 100644 --- a/djangoldp/tests/models.py +++ b/djangoldp/tests/models.py @@ -14,10 +14,12 @@ class JobOffer(models.Model): class Thread(models.Model): description = models.CharField(max_length=255, blank=True, null=True) + author_user = models.ForeignKey(settings.AUTH_USER_MODEL) class Message(models.Model): text = models.CharField(max_length=255, blank=True, null=True) thread = models.ForeignKey(Thread, on_delete=models.DO_NOTHING) + author_user = models.ForeignKey(settings.AUTH_USER_MODEL) diff --git a/djangoldp/tests/tests_update.py b/djangoldp/tests/tests_update.py index e87360dd..53a5d16f 100644 --- a/djangoldp/tests/tests_update.py +++ b/djangoldp/tests/tests_update.py @@ -1,3 +1,4 @@ +from django.contrib.auth.models import User from django.test import TestCase from djangoldp.serializers import LDPSerializer @@ -136,9 +137,10 @@ class Serializer(TestCase): self.assertEquals(skills[2].title, "skill2 UP") # title updated def test_update_list_with_reverse_relation(self): - thread = Thread.objects.create(description="Thread 1") - message1 = Message.objects.create(text="Message 1", thread=thread) - message2 = Message.objects.create(text="Message 2", thread=thread) + user1 = User.objects.create() + thread = Thread.objects.create(description="Thread 1", author_user=user1) + message1 = Message.objects.create(text="Message 1", thread=thread, author_user=user1) + message2 = Message.objects.create(text="Message 2", thread=thread, author_user=user1) json = {"@graph": [ @@ -173,3 +175,58 @@ class Serializer(TestCase): self.assertIs(result.message_set.count(), 2) self.assertEquals(messages[0].text, "Message 1 UP") self.assertEquals(messages[1].text, "Message 2 UP") + + def test_add_new_element_with_foreign_key_id(self): + user1 = User.objects.create() + thread = Thread.objects.create(description="Thread 1", author_user=user1) + message1 = Message.objects.create(text="Message 1", thread=thread, author_user=user1) + message2 = Message.objects.create(text="Message 2", thread=thread, author_user=user1) + + + json = {"@graph": [ + {"@id": "https://happy-dev.fr/messages/{}/".format(message1.pk), + "text": "Message 1 UP", + "author_user_id": user1.pk, + }, + {"@id": "https://happy-dev.fr/messages/{}/".format(message2.pk), + "text": "Message 2 UP", + "author_user_id": user1.pk, + }, + {"@id": "_:b1", + "text": "Message 3 NEW", + "author_user_id": user1.pk, + }, + { + '@id': "https://happy-dev.fr/threads/{}".format(thread.pk), + "author_user_id": user1.pk, + 'description': "Thread 1 UP", + 'message_set': { + "@id": "https://happy-dev.fr/threads/{}/message_set".format(thread.pk) + } + }, + { + '@id': "https://happy-dev.fr/threads/{}/message_set".format(thread.pk), + "ldp:contains": [ + {"@id": "https://happy-dev.fr/messages/{}/".format(message1.pk)}, + {"@id": "https://happy-dev.fr/messages/{}/".format(message2.pk)}, + {"@id": "_:b1"} + ] + } + ] + } + + meta_args = {'model': Thread, 'depth': 1, 'fields': ("@id", "description", "message_set" )} + + meta_class = type('Meta', (), meta_args) + serializer_class = type(LDPSerializer)('ThreadSerializer', (LDPSerializer,), {'Meta': meta_class}) + serializer = serializer_class(data=json, instance=thread) + serializer.is_valid() + result = serializer.save() + + messages = result.message_set.all().order_by('text') + + self.assertEquals(result.description, "Thread 1 UP") + self.assertIs(result.message_set.count(), 3) + self.assertEquals(messages[0].text, "Message 1 UP") + self.assertEquals(messages[1].text, "Message 2 UP") + self.assertEquals(messages[2].text, "Message 3 NEW") \ No newline at end of file -- GitLab