blob: 871ceed0d2219902417e644766723922efb2f64e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
"""Tests for :mod:`edify.integrations.django`."""
import pytest
from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator
from edify import Pattern
from edify.integrations.django import pattern_validator
_DIGITS_PATTERN = Pattern().start_of_input().one_or_more().digit().end_of_input()
def test_pattern_validator_returns_a_regex_validator_pinned_to_the_pattern_source():
validator = pattern_validator(_DIGITS_PATTERN)
assert isinstance(validator, RegexValidator)
assert validator.regex.pattern == _DIGITS_PATTERN.to_regex_string()
def test_pattern_validator_accepts_matching_input_without_raising():
validator = pattern_validator(_DIGITS_PATTERN)
validator("42")
def test_pattern_validator_raises_django_validation_error_on_non_matching_input():
validator = pattern_validator(_DIGITS_PATTERN)
with pytest.raises(ValidationError):
validator("abc")
def test_pattern_validator_carries_the_default_error_message_reproducing_the_regex():
validator = pattern_validator(_DIGITS_PATTERN)
assert _DIGITS_PATTERN.to_regex_string() in validator.message
def test_pattern_validator_accepts_an_override_message_and_code():
validator = pattern_validator(_DIGITS_PATTERN, message="digits only", code="bad_digits")
assert validator.message == "digits only"
assert validator.code == "bad_digits"
|