Add unit test to test creation of slug while saving

This commit is contained in:
Daniel Egger 2023-04-13 20:03:09 +02:00
parent cb37c55732
commit a3e4a50ba0
6 changed files with 56 additions and 11 deletions

View File

@ -15,7 +15,8 @@ class AssignmentListPage(CourseBasePage):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_available_slug(
slugify(f"{self.get_parent().slug}-assignment", allow_unicode=True)
slugify(f"{self.get_parent().slug}-assignment", allow_unicode=True),
ignore_page_id=self.id,
)
super(AssignmentListPage, self).save(clean, user, log_action, **kwargs)
@ -130,6 +131,7 @@ class Assignment(CourseBasePage):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_available_slug(
slugify(f"{self.get_parent().slug}-{self.title}", allow_unicode=True)
slugify(f"{self.get_parent().slug}-{self.title}", allow_unicode=True),
ignore_page_id=self.id,
)
super(Assignment, self).save(clean, user, log_action, **kwargs)

View File

@ -28,7 +28,8 @@ class CompetenceProfilePage(CourseBasePage):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_available_slug(
slugify(f"{self.get_parent().slug}-competence", allow_unicode=True)
slugify(f"{self.get_parent().slug}-competence", allow_unicode=True),
ignore_page_id=self.id,
)
super(CompetenceProfilePage, self).save(clean, user, log_action, **kwargs)
@ -59,7 +60,8 @@ class CompetencePage(CourseBasePage):
slugify(
f"{self.get_parent().slug}-competence-{self.competence_id}",
allow_unicode=True,
)
),
ignore_page_id=self.id,
)
super(CompetencePage, self).save(clean, user, log_action, **kwargs)
@ -87,14 +89,16 @@ class PerformanceCriteria(CourseBasePage):
slugify(
f"{profile_parent.slug}-crit-{self.competence_id}-{self.learning_unit.course_category.title}",
allow_unicode=True,
)
),
ignore_page_id=self.id,
)
else:
self.slug = find_available_slug(
slugify(
f"{profile_parent.slug}-crit-{self.competence_id}",
allow_unicode=True,
)
),
ignore_page_id=self.id,
)
super(PerformanceCriteria, self).save(clean, user, log_action, **kwargs)

View File

@ -129,7 +129,9 @@ class CoursePage(CourseBasePage):
verbose_name = _("Lehrgang-Seite")
def save(self, *args, **kwargs):
self.slug = find_available_slug(slugify(self.title, allow_unicode=True))
self.slug = find_available_slug(
slugify(self.title, allow_unicode=True), ignore_page_id=self.id
)
super(CoursePage, self).save(*args, **kwargs)
def __str__(self):

View File

@ -37,7 +37,8 @@ class LearningPath(CourseBasePage):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_available_slug(
slugify(f"{self.get_parent().slug}-lp", allow_unicode=True)
slugify(f"{self.get_parent().slug}-lp", allow_unicode=True),
ignore_page_id=self.id,
)
super(LearningPath, self).save(clean, user, log_action, **kwargs)
@ -307,5 +308,6 @@ def find_slug_with_parent_prefix(page, type_prefix, slug_postfix=None):
slug_postfix = page.title
return find_available_slug(
slugify(f"{slug_prefix}-{slug_postfix}", allow_unicode=True)
slugify(f"{slug_prefix}-{slug_postfix}", allow_unicode=True),
ignore_page_id=page.id,
)

View File

@ -0,0 +1,33 @@
from django.test import TestCase
from vbv_lernwelt.core.create_default_users import create_default_users
from vbv_lernwelt.course.creators.test_course import create_test_course
from vbv_lernwelt.learnpath.models import LearningContent
class SaveSlugTestCase(TestCase):
def setUp(self) -> None:
create_default_users()
create_test_course()
def test_save_willHandleSlug(self):
lc_fachcheck = LearningContent.objects.get(title="Fachcheck Fahrzeug")
self.assertEqual(
lc_fachcheck.slug, "test-lehrgang-lp-circle-analyse-lc-fachcheck-fahrzeug"
)
# only changing minutes should not change slug
lc_fachcheck.minutes = 135
lc_fachcheck.save()
lc_fachcheck = LearningContent.objects.get(id=lc_fachcheck.id)
self.assertEqual(
lc_fachcheck.slug, "test-lehrgang-lp-circle-analyse-lc-fachcheck-fahrzeug"
)
# changing title should change slug
lc_fachcheck.title = "Fachcheck Foobar"
lc_fachcheck.save()
lc_fachcheck = LearningContent.objects.get(id=lc_fachcheck.id)
self.assertEqual(
lc_fachcheck.slug, "test-lehrgang-lp-circle-analyse-lc-fachcheck-foobar"
)

View File

@ -25,7 +25,8 @@ class MediaLibraryPage(CourseBasePage):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_available_slug(
slugify(f"{self.get_parent().slug}-media", allow_unicode=True)
slugify(f"{self.get_parent().slug}-media", allow_unicode=True),
ignore_page_id=self.id,
)
super(MediaLibraryPage, self).save(clean, user, log_action, **kwargs)
@ -86,7 +87,8 @@ class MediaCategoryPage(CourseBasePage):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_available_slug(
slugify(f"{self.get_parent().slug}-cat-{self.title}", allow_unicode=True)
slugify(f"{self.get_parent().slug}-cat-{self.title}", allow_unicode=True),
ignore_page_id=self.id,
)
super(MediaCategoryPage, self).save(clean, user, log_action, **kwargs)