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