From b58aa3cbe922451230187380ce2aaa239041ebb6 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste <bleme@pm.me> Date: Wed, 13 Mar 2019 12:29:44 +0100 Subject: [PATCH] syntax: issue #101 failed unit test --- djangoldp/__init__.py | 2 +- djangoldp/tests/models.py | 14 ++++++++++++-- djangoldp/tests/tests_ldp_model.py | 6 +++--- djangoldp/tests/tests_save.py | 3 ++- djangoldp/tests/urls.py | 4 +--- djangoldp/urls.py | 1 + 6 files changed, 20 insertions(+), 10 deletions(-) diff --git a/djangoldp/__init__.py b/djangoldp/__init__.py index 7461cf54..8c3166a1 100644 --- a/djangoldp/__init__.py +++ b/djangoldp/__init__.py @@ -1,4 +1,4 @@ from django.db.models import options __version__ = '0.0.0' -options.DEFAULT_NAMES += ('rdf_type', 'rdf_context', 'auto_author', 'view_set', 'container_path', 'permission_classes', 'serializer_fields', 'nested_fields') \ No newline at end of file +options.DEFAULT_NAMES += ('lookup_field', 'rdf_type', 'rdf_context', 'auto_author', 'view_set', 'container_path', 'permission_classes', 'serializer_fields', 'nested_fields') \ No newline at end of file diff --git a/djangoldp/tests/models.py b/djangoldp/tests/models.py index 981e5158..e29ee17c 100644 --- a/djangoldp/tests/models.py +++ b/djangoldp/tests/models.py @@ -4,15 +4,24 @@ from django.db import models from djangoldp.models import Model -class Skill(models.Model): +class Skill(Model): title = models.CharField(max_length=255, blank=True, null=True) obligatoire = models.CharField(max_length=255) + class Meta: + serializer_fields=["@id", "title"] + lookup_field = 'title' + -class JobOffer(models.Model): +class JobOffer(Model): title = models.CharField(max_length=255, blank=True, null=True) skills = models.ManyToManyField(Skill, blank=True) + class Meta: + nested_fields=["skills"] + container_path="job-offers/" + lookup_field = 'title' + class Thread(models.Model): description = models.CharField(max_length=255, blank=True, null=True) @@ -27,6 +36,7 @@ class Message(models.Model): class Dummy(models.Model): some = models.CharField(max_length=255, blank=True, null=True) + slug = models.SlugField(blank=True, null=True, unique=True) class LDPDummy(Model): diff --git a/djangoldp/tests/tests_ldp_model.py b/djangoldp/tests/tests_ldp_model.py index 329899c0..3e1da6a7 100644 --- a/djangoldp/tests/tests_ldp_model.py +++ b/djangoldp/tests/tests_ldp_model.py @@ -11,7 +11,7 @@ class LDPModelTest(TestCase): def test_class_not_inheriting_ldp_model(self): dummy = Dummy.objects.create(some="text") self.assertEquals("/dummys/", Model.container_id(dummy)) - self.assertEquals("/dummys/{}".format(dummy.pk), Model.resource_id(dummy)) + self.assertEquals("/dummys/{}".format(dummy.slug), Model.resource_id(dummy)) def test_class_inheriting_ldp_model(self): dummy = LDPDummy.objects.create(some="text") @@ -21,8 +21,8 @@ class LDPModelTest(TestCase): self.assertEquals("/ldpdummys/{}".format(dummy.pk), Model.resource_id(dummy)) def test_from_resolve_id(self): - saved_instance = Dummy.objects.create(some="text") - result = Model.resolve_id("/dummys/{}".format(saved_instance.pk)) + saved_instance = Dummy.objects.create(some="text", slug="someid") + result = Model.resolve_id("/dummys/{}".format(saved_instance.slug)) self.assertEquals(saved_instance, result) def test_resolve_container(self): diff --git a/djangoldp/tests/tests_save.py b/djangoldp/tests/tests_save.py index 342448e4..161e45f5 100644 --- a/djangoldp/tests/tests_save.py +++ b/djangoldp/tests/tests_save.py @@ -1,7 +1,7 @@ from django.test import TestCase from djangoldp.serializers import LDPSerializer -from djangoldp.tests.models import Skill, JobOffer, Invoice +from djangoldp.tests.models import Skill, JobOffer, Invoice, Dummy class Save(TestCase): @@ -144,3 +144,4 @@ class Save(TestCase): self.assertIs(result.joboffer_set.count(), 1) self.assertEquals(result.joboffer_set.get(), job) self.assertIs(result.joboffer_set.get().skills.count(), 1) + diff --git a/djangoldp/tests/urls.py b/djangoldp/tests/urls.py index 5062860e..7ac1c38f 100644 --- a/djangoldp/tests/urls.py +++ b/djangoldp/tests/urls.py @@ -5,12 +5,10 @@ from djangoldp.tests.models import Skill, JobOffer, Message, Thread, Dummy from djangoldp.views import LDPViewSet urlpatterns = [ - url(r'^skills/', LDPViewSet.urls(model=Skill, permission_classes=[], fields=["@id", "title"], nested_fields=[])), - url(r'^job-offers/', LDPViewSet.urls(model=JobOffer, nested_fields=["skills"], permission_classes=())), url(r'^messages/', LDPViewSet.urls(model=Message, permission_classes=[], fields=["@id", "text"], nested_fields=[])), url(r'^threads/', LDPViewSet.urls(model=Thread, nested_fields=["message_set"], permission_classes=())), url(r'^users/', LDPViewSet.urls(model=settings.AUTH_USER_MODEL, permission_classes=[])), - url(r'^dummys/', LDPViewSet.urls(model=Dummy, permission_classes=[])), + url(r'^dummys/', LDPViewSet.urls(model=Dummy, permission_classes=[], lookup_field='slug',)), url(r'^', include('djangoldp.urls')), ] diff --git a/djangoldp/urls.py b/djangoldp/urls.py index 59efe9c9..1dcce95e 100644 --- a/djangoldp/urls.py +++ b/djangoldp/urls.py @@ -30,6 +30,7 @@ for class_name in model_classes: urls_fct = model_class.get_view_set().urls urlpatterns.append(url(r'^' + path, include( urls_fct(model=model_class, + lookup_field=getattr(model_class._meta, 'lookup_field', getattr(model_class.Meta, 'lookup_field', [])), permission_classes=getattr(model_class._meta, 'permission_classes', getattr(model_class.Meta, 'permission_classes', [])), fields=getattr(model_class._meta, 'serializer_fields', getattr(model_class.Meta, 'serializer_fields', [])), nested_fields=getattr(model_class._meta, 'nested_fields', getattr(model_class.Meta, 'nested_fields', [])))))) -- GitLab