diff options
| author | 2018-09-23 15:21:42 +0200 | |
|---|---|---|
| committer | 2018-09-23 15:21:42 +0200 | |
| commit | 4fbbf9c2a8b30862bfaab1dddf4e860431bf6046 (patch) | |
| tree | 42fa33c0a6b22794d20a2424785803c02c4e391b /api/tests | |
| parent | Revert "Add the `Tag` model." (diff) | |
| parent | Add API root view documentation. (diff) | |
Merge branch 'django+add-tag-api' into django
Diffstat (limited to 'api/tests')
| -rw-r--r-- | api/tests/test_validators.py | 132 | 
1 files changed, 132 insertions, 0 deletions
| diff --git a/api/tests/test_validators.py b/api/tests/test_validators.py new file mode 100644 index 00000000..51f02412 --- /dev/null +++ b/api/tests/test_validators.py @@ -0,0 +1,132 @@ +from django.core.exceptions import ValidationError +from django.test import TestCase + +from ..validators import validate_tag_embed + + +REQUIRED_KEYS = ( +    'content', 'fields', 'image', 'title', 'video' +) + + +class TagEmbedValidatorTests(TestCase): +    def test_rejects_non_mapping(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed('non-empty non-mapping') + +    def test_rejects_missing_required_keys(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'unknown': "key" +            }) + +    def test_rejects_empty_required_key(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'title': '' +            }) + +    def test_rejects_list_as_embed(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed([]) + +    def test_rejects_required_keys_and_unknown_keys(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'title': "the duck walked up to the lemonade stand", +                'and': "he said to the man running the stand" +            }) + +    def test_rejects_too_long_title(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'title': 'a' * 257 +            }) + +    def test_rejects_too_many_fields(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'fields': [{} for _ in range(26)] +            }) + +    def test_rejects_too_long_description(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'description': 'd' * 2049 +            }) + +    def test_rejects_fields_as_list_of_non_mappings(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'fields': ['abc'] +            }) + +    def test_rejects_fields_with_unknown_fields(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'fields': [ +                    { +                        'what': "is this field" +                    } +                ] +            }) + +    def test_rejects_fields_with_too_long_name(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'fields': [ +                    { +                        'name': "a" * 257 +                    } +                ] +            }) + +    def test_rejects_footer_as_non_mapping(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'title': "whatever", +                'footer': [] +            }) + +    def test_rejects_footer_with_unknown_fields(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'title': "whatever", +                'footer': { +                    'duck': "quack" +                } +            }) + +    def test_rejects_footer_with_empty_text(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'title': "whatever", +                'footer': { +                    'text': "" +                } +            }) + +    def test_rejects_author_as_non_mapping(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'title': "whatever", +                'author': [] +            }) + +    def test_rejects_author_with_unknown_field(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'title': "whatever", +                'author': { +                    'field': "that is unknown" +                } +            }) + +    def test_rejects_author_with_empty_name(self): +        with self.assertRaises(ValidationError): +            validate_tag_embed({ +                'title': "whatever", +                'author': { +                    'name': "" +                } +            }) | 
