diff --git a/djangoldp/tests.py b/djangoldp/tests.py deleted file mode 100644 index 7ce503c2dd97ba78597f6ff6e4393132753573f6..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..7a0760a41c108effd21ce1bfd013796a7c8afd9f --- /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 0000000000000000000000000000000000000000..7fb1b4ffc2a017769a385298e0b1e9cfa7c8671c --- /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 0000000000000000000000000000000000000000..899890c8b881a1538e0794ffb1a669723e79fa64 --- /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 26a84d1ea3dfaa29069bc94134c9e5fdee8c115b..832395b260bb0f286fc7345a37c3842fa6252f09 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