From 91bea9659ffe94a265b74ed62786a214047f6e03 Mon Sep 17 00:00:00 2001 From: Vincent Porte Date: Wed, 4 Sep 2024 16:56:49 +0200 Subject: [PATCH] feat(partner): referencer les fiches partenaires dans sitemap.xml (#759) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description 🎸 Referencer les fiches partenaires dans sitemap.xml ## Type de changement 🚧 technique ### Points d'attention 🦺 Parametrisation des tests de `Topic`, `Forum` et `Partner` 🦺 suite de #757 --- lacommunaute/pages/sitemaps.py | 12 ++++++++++ lacommunaute/pages/tests/test_sitemap.py | 28 ++++++++++++------------ lacommunaute/pages/urls.py | 1 + 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/lacommunaute/pages/sitemaps.py b/lacommunaute/pages/sitemaps.py index b6657433f..db6dd31f2 100644 --- a/lacommunaute/pages/sitemaps.py +++ b/lacommunaute/pages/sitemaps.py @@ -5,6 +5,7 @@ from lacommunaute.forum.models import Forum from lacommunaute.forum_conversation.models import Topic +from lacommunaute.partner.models import Partner class PagesSitemap(Sitemap): @@ -35,3 +36,14 @@ def items(self): def lastmod(self, obj: Model) -> str: return obj.last_post_on + + +class PartnerSitemap(Sitemap): + def items(self): + return Partner.objects.all() + + def location(self, obj: Model) -> str: + return reverse("partner:detail", kwargs={"slug": obj.slug, "pk": obj.pk}) + + def lastmod(self, obj: Model) -> str: + return obj.updated diff --git a/lacommunaute/pages/tests/test_sitemap.py b/lacommunaute/pages/tests/test_sitemap.py index bd115c364..97f4efd9b 100644 --- a/lacommunaute/pages/tests/test_sitemap.py +++ b/lacommunaute/pages/tests/test_sitemap.py @@ -4,6 +4,7 @@ from lacommunaute.forum.factories import ForumFactory from lacommunaute.forum_conversation.factories import TopicFactory +from lacommunaute.partner.factories import PartnerFactory def test_sitemap(client, db): @@ -14,22 +15,21 @@ def test_sitemap(client, db): assert "sitemap.xml" in response.templates[0].name -def test_topic_is_in_sitemap(client, db): - topic = TopicFactory(with_post=True) - url = reverse("pages:django.contrib.sitemaps.views.sitemap") - response = client.get(url) - assert response.status_code == 200 - assert topic.get_absolute_url() in response.content.decode() - assert f"{topic.last_post_on.strftime('%Y-%m-%d')}" in response.content.decode() +@pytest.mark.parametrize( + "factory, factory_kwargs,lastmod_field", + [ + (TopicFactory, {"with_post": True}, "last_post_on"), + (ForumFactory, {}, "updated"), + (PartnerFactory, {}, "updated"), + ], +) +def test_objects_are_in_sitemap(client, db, factory, factory_kwargs, lastmod_field): + obj = factory(**factory_kwargs) + response = client.get(reverse("pages:django.contrib.sitemaps.views.sitemap")) - -def test_forum_is_in_sitemap(client, db): - forum = ForumFactory() - url = reverse("pages:django.contrib.sitemaps.views.sitemap") - response = client.get(url) assert response.status_code == 200 - assert reverse("forum_extension:forum", kwargs={"pk": forum.pk, "slug": forum.slug}) in response.content.decode() - assert f"{forum.updated.strftime('%Y-%m-%d')}" in response.content.decode() + assert obj.get_absolute_url() in response.content.decode() + assert f"{getattr(obj, lastmod_field).strftime('%Y-%m-%d')}" in response.content.decode() def test_flatpage_is_in_sitemap(client, db): diff --git a/lacommunaute/pages/urls.py b/lacommunaute/pages/urls.py index a18ea282e..981d15595 100644 --- a/lacommunaute/pages/urls.py +++ b/lacommunaute/pages/urls.py @@ -9,6 +9,7 @@ "pages": sitemaps.PagesSitemap, "forum": sitemaps.ForumSitemap, "topic": sitemaps.TopicSitemap, + "partner": sitemaps.PartnerSitemap, } app_name = "pages"