• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

LeanderCS / flask-inputfilter / #377

28 Apr 2025 08:31AM UTC coverage: 96.411% (-0.2%) from 96.568%
#377

push

coveralls-python

LeanderCS
Added testing for correct error message

5 of 5 new or added lines in 3 files covered. (100.0%)

4 existing lines in 2 files now uncovered.

1800 of 1867 relevant lines covered (96.41%)

0.96 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.15
/flask_inputfilter/validators/date_before_validator.py
1
from __future__ import annotations
1✔
2

3
from datetime import date, datetime
1✔
4
from typing import Any, Optional, Union
1✔
5

6
from flask_inputfilter.exceptions import ValidationError
1✔
7
from flask_inputfilter.validators import BaseValidator
1✔
8

9

10
class DateBeforeValidator(BaseValidator):
1✔
11
    """
12
    Validator that checks if a date is before a specific date.
13
    Supports datetime and ISO 8601 formatted strings.
14
    """
15

16
    __slots__ = ("reference_date", "error_message")
1✔
17

18
    def __init__(
1✔
19
        self,
20
        reference_date: Union[str, date, datetime],
21
        error_message: Optional[str] = None,
22
    ) -> None:
23
        self.reference_date = reference_date
1✔
24
        self.error_message = error_message
1✔
25

26
    def validate(self, value: Any) -> None:
1✔
27
        value_reference_date = self.__parse_date(self.reference_date)
1✔
28
        value_datetime = self.__parse_date(value)
1✔
29

30
        if value_datetime >= value_reference_date:
1✔
31
            raise ValidationError(
1✔
32
                self.error_message
33
                or f"Date '{value}' is not before '{value_reference_date}'."
34
            )
35

36
    @staticmethod
1✔
37
    def __parse_date(value: Any) -> datetime:
38
        if isinstance(value, datetime):
1✔
39
            return value
1✔
40

41
        elif isinstance(value, date):
1✔
42
            return datetime.combine(value, datetime.min.time())
1✔
43

44
        elif isinstance(value, str):
1✔
45
            try:
1✔
46
                return datetime.fromisoformat(value)
1✔
47

48
            except ValueError:
1✔
49
                raise ValidationError(f"Invalid ISO 8601 format '{value}'.")
1✔
50

UNCOV
51
        raise ValidationError(
×
52
            f"Unsupported type for date comparison '{type(value)}'."
53
        )
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc