@@ -739,6 +739,46 @@ def test_forced_template_becomes_inactive(self, user, maildomain, admin_detail_u
739739 assert signature .is_forced is False
740740 assert signature .is_active is False
741741
742+ def test_default_template_becomes_inactive (self , user , maildomain , admin_detail_url ):
743+ """Test that when a default template is updated to be inactive, it should also become non-default."""
744+ factories .MailDomainAccessFactory (
745+ maildomain = maildomain ,
746+ user = user ,
747+ role = models .MailDomainAccessRoleChoices .ADMIN ,
748+ )
749+
750+ # Create a default signature template
751+ signature = factories .MessageTemplateFactory (
752+ name = "Default Signature Template" ,
753+ html_body = "<p>Default signature content</p>" ,
754+ text_body = "Default signature content" ,
755+ type = enums .MessageTemplateTypeChoices .SIGNATURE ,
756+ maildomain = maildomain ,
757+ is_default = True ,
758+ is_active = True ,
759+ )
760+
761+ assert signature .is_default is True
762+ assert signature .is_active is True
763+
764+ # Update template to be inactive
765+ client = APIClient ()
766+ client .force_authenticate (user = user )
767+
768+ data = {"is_active" : False }
769+
770+ response = client .patch (
771+ admin_detail_url (signature .id ),
772+ data ,
773+ format = "json" ,
774+ )
775+ assert response .status_code == status .HTTP_200_OK
776+
777+ # Verify that template is no longer default and is inactive
778+ signature .refresh_from_db ()
779+ assert signature .is_default is False
780+ assert signature .is_active is False
781+
742782 def test_is_forced_maildomain (self , user , maildomain , admin_detail_url ):
743783 """Test that updating a template to forced sets others to not forced for the same maildomain and type."""
744784 factories .MailDomainAccessFactory (
@@ -790,6 +830,57 @@ def test_is_forced_maildomain(self, user, maildomain, admin_detail_url):
790830 assert signature1 .is_forced is False
791831 assert signature2 .is_forced is True
792832
833+ def test_is_default_maildomain (self , user , maildomain , admin_detail_url ):
834+ """Test that updating a template to default sets others to not default for the same maildomain and type."""
835+ factories .MailDomainAccessFactory (
836+ maildomain = maildomain ,
837+ user = user ,
838+ role = models .MailDomainAccessRoleChoices .ADMIN ,
839+ )
840+
841+ # Create signature template as default
842+ signature1 = factories .MessageTemplateFactory (
843+ name = "Default Signature Template" ,
844+ html_body = "<p>Default signature content</p>" ,
845+ text_body = "Default signature content" ,
846+ type = enums .MessageTemplateTypeChoices .SIGNATURE ,
847+ maildomain = maildomain ,
848+ is_default = True ,
849+ )
850+
851+ # Create second signature template as not default
852+ signature2 = factories .MessageTemplateFactory (
853+ name = "Second Signature Template" ,
854+ html_body = "<p>Second signature content</p>" ,
855+ text_body = "Second signature content" ,
856+ type = enums .MessageTemplateTypeChoices .SIGNATURE ,
857+ maildomain = maildomain ,
858+ is_default = False ,
859+ )
860+
861+ assert signature1 .is_default is True
862+ assert signature2 .is_default is False
863+
864+ # Update second template to be default
865+ client = APIClient ()
866+ client .force_authenticate (user = user )
867+
868+ data = {"is_default" : True }
869+
870+ response = client .patch (
871+ admin_detail_url (signature2 .id ),
872+ data ,
873+ format = "json" ,
874+ )
875+ assert response .status_code == status .HTTP_200_OK
876+
877+ # Verify that first template is no longer default
878+ signature1 .refresh_from_db ()
879+ signature2 .refresh_from_db ()
880+
881+ assert signature1 .is_default is False
882+ assert signature2 .is_default is True
883+
793884
794885class TestAdminMailDomainMessageTemplateDelete :
795886 """Test delete operations for MessageTemplateViewSet."""
0 commit comments