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

1import re 

2from django.test import TestCase 

3from author.forms import AuthorFormInput 

4from .forms import AuthorForm 

5from .models import Author 

6 

7 

8class TestAddAuthorForm(TestCase): 

9 

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") 

14 

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") 

19 

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") 

25 

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") 

31 

32 

33class TestAuthorFormInput(TestCase): 

34 

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)) 

41 

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)) 

51 

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)) 

58 

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())