1. from django import forms
    
  2. from django.core.exceptions import ValidationError
    
  3. from django.test import TestCase
    
  4. 
    
  5. from .models import UUIDPK
    
  6. 
    
  7. 
    
  8. class UUIDPKForm(forms.ModelForm):
    
  9.     class Meta:
    
  10.         model = UUIDPK
    
  11.         fields = "__all__"
    
  12. 
    
  13. 
    
  14. class ModelFormBaseTest(TestCase):
    
  15.     def test_create_save_error(self):
    
  16.         form = UUIDPKForm({})
    
  17.         self.assertFalse(form.is_valid())
    
  18.         msg = "The UUIDPK could not be created because the data didn't validate."
    
  19.         with self.assertRaisesMessage(ValueError, msg):
    
  20.             form.save()
    
  21. 
    
  22.     def test_update_save_error(self):
    
  23.         obj = UUIDPK.objects.create(name="foo")
    
  24.         form = UUIDPKForm({}, instance=obj)
    
  25.         self.assertFalse(form.is_valid())
    
  26.         msg = "The UUIDPK could not be changed because the data didn't validate."
    
  27.         with self.assertRaisesMessage(ValueError, msg):
    
  28.             form.save()
    
  29. 
    
  30.     def test_model_multiple_choice_field_uuid_pk(self):
    
  31.         f = forms.ModelMultipleChoiceField(UUIDPK.objects.all())
    
  32.         with self.assertRaisesMessage(
    
  33.             ValidationError, "“invalid_uuid” is not a valid UUID."
    
  34.         ):
    
  35.             f.clean(["invalid_uuid"])