From 6fdd8eccc099178a55f8870fd2d8f36134b3b156 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste <bleme@pm.me> Date: Wed, 30 Jan 2019 14:41:09 +0100 Subject: [PATCH] syntax: Add failed unit test --- djangoldp/tests.py | 3 --- djangoldp/tests/models.py | 10 ++++++++++ djangoldp/tests/runner.py | 28 ++++++++++++++++++++++++++++ djangoldp/tests/tests.py | 30 ++++++++++++++++++++++++++++++ djangoldp/views.py | 4 ++++ 5 files changed, 72 insertions(+), 3 deletions(-) delete mode 100644 djangoldp/tests.py create mode 100644 djangoldp/tests/models.py create mode 100644 djangoldp/tests/runner.py create mode 100644 djangoldp/tests/tests.py diff --git a/djangoldp/tests.py b/djangoldp/tests.py deleted file mode 100644 index 7ce503c2..00000000 --- a/djangoldp/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/djangoldp/tests/models.py b/djangoldp/tests/models.py new file mode 100644 index 00000000..7a0760a4 --- /dev/null +++ b/djangoldp/tests/models.py @@ -0,0 +1,10 @@ +from django.db import models + + +class Skill(models.Model): + title = models.CharField(max_length=255, blank=True, null=True) + + +class JobOffer(models.Model): + title = models.CharField(max_length=255, blank=True, null=True) + skills = models.ManyToManyField(Skill, blank=True) \ No newline at end of file diff --git a/djangoldp/tests/runner.py b/djangoldp/tests/runner.py new file mode 100644 index 00000000..7fb1b4ff --- /dev/null +++ b/djangoldp/tests/runner.py @@ -0,0 +1,28 @@ +import django +import sys +from django.conf import settings + +settings.configure(DEBUG=True, + DATABASES={ + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + } + }, + INSTALLED_APPS=('django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.admin', + 'guardian', + 'djangoldp', + 'djangoldp.tests', + )) + + +django.setup() +from django.test.runner import DiscoverRunner + +test_runner = DiscoverRunner(verbosity=1) + +failures = test_runner.run_tests(['djangoldp.tests.tests']) +if failures: + sys.exit(failures) diff --git a/djangoldp/tests/tests.py b/djangoldp/tests/tests.py new file mode 100644 index 00000000..899890c8 --- /dev/null +++ b/djangoldp/tests/tests.py @@ -0,0 +1,30 @@ +from django.test import TestCase + +from djangoldp.serializers import LDPSerializer +from djangoldp.tests.models import Skill, JobOffer + + +class Serializer(TestCase): + + def test_container_serializer_save(self): + skill1 = Skill.objects.create(title="skill1") + skill2 = Skill.objects.create(title="skill2") + job = {"title": "job test", + "skills": { + "ldp:contains": [ + {"@id:": "https://happy-dev.fr/skills/{}/".format(skill1.pk)}, + {"@id:": "https://happy-dev.fr/skills/{}/".format(skill2.pk)}, + + ]} + } + + meta_args = {'model': JobOffer, 'depth': 2, 'fields': ("title", "skills")} + + meta_class = type('Meta', (), meta_args) + serializer_class = type(LDPSerializer)('JobOfferSerializer', (LDPSerializer,), {'Meta': meta_class}) + serializer = serializer_class(data=job) + serializer.is_valid() + result = serializer.save() + + self.assertEquals(result.title, "job test") + self.assertIs(result.skills.count(), 2) diff --git a/djangoldp/views.py b/djangoldp/views.py index 26a84d1e..832395b2 100644 --- a/djangoldp/views.py +++ b/djangoldp/views.py @@ -130,6 +130,10 @@ class LDPViewSet(LDPViewSetGenerator): response["Accept-Post"] = "application/ld+json" return response + def update(self, request, *args, **kwargs): + response = super().update(request, *args, **kwargs) + return response + class LDPNestedViewSet(LDPViewSet): """A special case of LDPViewSet serving objects of a relation of a given object (e.g. members of a group, or skills of a user)""" parent_model = None -- GitLab