✅(tests) fix tests after adding slugs to domains
- slug readonly on admin - fix test to expect slug in payload, when retrieving a domain
This commit is contained in:
committed by
Sebastien Nobour
parent
93d4abee58
commit
19c36eafde
@@ -14,9 +14,10 @@ class MailDomainAdmin(admin.ModelAdmin):
|
|||||||
"name",
|
"name",
|
||||||
"created_at",
|
"created_at",
|
||||||
"updated_at",
|
"updated_at",
|
||||||
|
"slug",
|
||||||
)
|
)
|
||||||
search_fields = ("name",)
|
search_fields = ("name",)
|
||||||
readonly_fields = ["created_at"]
|
readonly_fields = ["created_at", "slug"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.MailDomainAccess)
|
@admin.register(models.MailDomainAccess)
|
||||||
|
|||||||
@@ -26,6 +26,12 @@ class MailDomainSerializer(serializers.ModelSerializer):
|
|||||||
"created_at",
|
"created_at",
|
||||||
"updated_at",
|
"updated_at",
|
||||||
]
|
]
|
||||||
|
read_only_fields = [
|
||||||
|
"id",
|
||||||
|
"slug",
|
||||||
|
"created_at",
|
||||||
|
"updated_at",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class MailDomainAccessSerializer(serializers.ModelSerializer):
|
class MailDomainAccessSerializer(serializers.ModelSerializer):
|
||||||
|
|||||||
@@ -28,10 +28,14 @@ class MailDomain(BaseModel):
|
|||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if not self.slug:
|
"""Override save function to compute the slug."""
|
||||||
self.slug = slugify(self.name)
|
self.slug = self.get_slug()
|
||||||
return super().save(*args, **kwargs)
|
return super().save(*args, **kwargs)
|
||||||
|
|
||||||
|
def get_slug(self):
|
||||||
|
"""Compute slug value from name."""
|
||||||
|
return slugify(self.name)
|
||||||
|
|
||||||
def get_abilities(self, user):
|
def get_abilities(self, user):
|
||||||
"""
|
"""
|
||||||
Compute and return abilities for a given user on the domain.
|
Compute and return abilities for a given user on the domain.
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ def test_api_mail_domains__retrieve_authenticated_related():
|
|||||||
assert response.json() == {
|
assert response.json() == {
|
||||||
"id": str(domain.id),
|
"id": str(domain.id),
|
||||||
"name": domain.name,
|
"name": domain.name,
|
||||||
|
"slug": domain.slug,
|
||||||
"created_at": domain.created_at.isoformat().replace("+00:00", "Z"),
|
"created_at": domain.created_at.isoformat().replace("+00:00", "Z"),
|
||||||
"updated_at": domain.updated_at.isoformat().replace("+00:00", "Z"),
|
"updated_at": domain.updated_at.isoformat().replace("+00:00", "Z"),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Unit tests for the MailDomain model
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
|
from django.utils.text import slugify
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
@@ -10,7 +11,6 @@ from mailbox_manager import factories
|
|||||||
|
|
||||||
pytestmark = pytest.mark.django_db
|
pytestmark = pytest.mark.django_db
|
||||||
|
|
||||||
|
|
||||||
# NAME FIELD
|
# NAME FIELD
|
||||||
|
|
||||||
|
|
||||||
@@ -24,3 +24,11 @@ def test_models_mail_domain__domain_name_should_not_be_null():
|
|||||||
"""The domain name field should not be null."""
|
"""The domain name field should not be null."""
|
||||||
with pytest.raises(ValidationError, match="This field cannot be null."):
|
with pytest.raises(ValidationError, match="This field cannot be null."):
|
||||||
factories.MailDomainFactory(name=None)
|
factories.MailDomainFactory(name=None)
|
||||||
|
|
||||||
|
|
||||||
|
def test_models_mail_domain__slug_inferred_from_name():
|
||||||
|
"""Passed slug is ignored. Slug is automatically generated from name."""
|
||||||
|
|
||||||
|
name = "N3w_D0main-Name$.com"
|
||||||
|
domain = factories.MailDomainFactory(name=name, slug="something else")
|
||||||
|
assert domain.slug == slugify(name)
|
||||||
|
|||||||
Reference in New Issue
Block a user