Coverage for author\test_forms.py: 100%
40 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-06-29 10:02 +0100
« prev ^ index » next coverage.py v7.4.4, created at 2024-06-29 10:02 +0100
1import re
2from django.test import TestCase
3from author.forms import AuthorFormInput
4from .forms import AuthorForm
5from .models import Author
8class TestAddAuthorForm(TestCase):
10 def test_form_is_valid(self):
11 """ Test for all fields"""
12 form = AuthorForm({'name': 'test'})
13 self.assertTrue(form.is_valid(), msg="Form is not valid")
15 def test_name_is_required(self):
16 """Test for the 'name' field"""
17 form = AuthorForm({'name': ''})
18 self.assertFalse(form.is_valid(), msg="Name was not provided")
20 def test_form_meta_model(self):
21 """Test the Meta model attribute"""
22 form = AuthorForm()
23 self.assertEqual(form.Meta.model, Author,
24 msg="Incorrect Meta model attribute")
26 def test_form_meta_fields(self):
27 """Test the Meta fields attribute"""
28 form = AuthorForm()
29 self.assertEqual(form.Meta.fields, ('name',),
30 msg="Incorrect Meta fields attribute")
33class TestAuthorFormInput(TestCase):
35 def test_valid_first_second_name(self):
36 """Test case to verify if the first and second name are valid."""
37 name = "William Shakespeare"
38 form = AuthorFormInput(data={'name': name})
39 pattern = form.fields['name'].widget.attrs['pattern']
40 self.assertTrue(re.match(pattern, name))
42 def test_invalid_first_name(self):
43 """
44 Test case to verify if an invalid first name is rejected
45 by the AuthorFormInput.
46 """
47 name = "william Shakespeare"
48 form = AuthorFormInput(data={'name': name})
49 pattern = form.fields['name'].widget.attrs['pattern']
50 self.assertFalse(re.match(pattern, name))
52 def test_invalid_second_name(self):
53 """Test for invalid second name."""
54 name = "William shakespeare"
55 form = AuthorFormInput(data={'name': name})
56 pattern = form.fields['name'].widget.attrs['pattern']
57 self.assertFalse(re.match(pattern, name))
59 def test_empty_name(self):
60 """Test case to verify the behavior when the name field is empty."""
61 name = ""
62 form = AuthorFormInput(data={'name': name})
63 pattern = form.fields['name'].widget.attrs['pattern']
64 self.assertFalse(re.match(pattern, name))
65 self.assertFalse(form.is_valid())