diff options
Diffstat (limited to 'day9/task5_vue/tests')
| -rw-r--r-- | day9/task5_vue/tests/__init__.py | 0 | ||||
| -rw-r--r-- | day9/task5_vue/tests/test_db_validators.py | 124 |
2 files changed, 124 insertions, 0 deletions
diff --git a/day9/task5_vue/tests/__init__.py b/day9/task5_vue/tests/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/day9/task5_vue/tests/__init__.py diff --git a/day9/task5_vue/tests/test_db_validators.py b/day9/task5_vue/tests/test_db_validators.py new file mode 100644 index 0000000..b83fcf1 --- /dev/null +++ b/day9/task5_vue/tests/test_db_validators.py @@ -0,0 +1,124 @@ +from backend.database.validators import ( + ValidateNull, ValidateType, ValidateTime, + ValidateDatetime, ValidateDate, ValidateLength, + ValidationError +) +from backend.database.field_types import ( + TextField, IntegerField, + DatetimeField, DateField, TimeField +) + +import pytest + + +def test_validate_null(): + field1 = IntegerField(None, nullable=False, is_auto_increment=False) + field2 = IntegerField(None, nullable=True, is_auto_increment=False) + + with pytest.raises(ValidationError): + ValidateNull.validate(None, field1) + + assert ValidateNull.validate(None, field2) is None + + +def test_validate_type(): + text1 = TextField(10, True, nullable=False) + text2 = TextField(10, True, nullable=True) + + with pytest.raises(ValidationError): + ValidateType.validate(None, text1) + + with pytest.raises(ValidationError): + ValidateType.validate(12, text1) + + with pytest.raises(ValidationError): + ValidateType.validate({1, 2, 3}, text1) + + with pytest.raises(ValidationError): + ValidateType.validate({1: 2}, text1) + + assert ValidateType.validate('123', text1) is None + assert ValidateType.validate(None, text2) is None + + +def test_validate_length(): + text1 = TextField(10, is_variable_length=True, nullable=False) + text2 = TextField(10, is_variable_length=False, nullable=False) + + assert ValidateLength.validate('1234567890', text1) is None + assert ValidateLength.validate('1234567890', text2) is None + + with pytest.raises(ValidationError): + ValidateLength.validate('1234567890*', text1) + + with pytest.raises(ValidationError): + ValidateLength.validate('123456789', text2) + + assert ValidateLength.validate('123456789', text1) is None + + +def test_validate_time(): + time_field = TimeField(False) + + assert ValidateTime.validate('00:00:00', time_field) is None + assert ValidateTime.validate('23:59:59', time_field) is None + + with pytest.raises(ValidationError): + ValidateTime.validate('24:00:00', time_field) + + with pytest.raises(ValidationError): + ValidateTime.validate('12:60:00', time_field) + + with pytest.raises(ValidationError): + ValidateTime.validate('12:00:60', time_field) + + with pytest.raises(ValidationError, match='Wrong time format'): + ValidateTime.validate('22:00', time_field) + + with pytest.raises(ValidationError, match='Wrong time format'): + ValidateTime.validate('22:00 12', time_field) + + with pytest.raises(ValidationError, match='Wrong time format'): + ValidateTime.validate('gsdfsd', time_field) + + +def test_validate_date(): + date_field = DateField(False) + + assert ValidateDate.validate('0001-01-01', date_field) is None + assert ValidateDate.validate('9999-12-31', date_field) is None + + with pytest.raises(ValidationError): + ValidateDate.validate('0000-00-00', date_field) + + with pytest.raises(ValidationError, match='Wrong day value'): + ValidateDate.validate('2019-02-29', date_field) + + assert ValidateDate.validate('2020-02-29', date_field) is None + + with pytest.raises(ValidationError): + ValidateDate.validate('2019-02-30', date_field) + + with pytest.raises(ValidationError, match='Wrong date format'): + ValidateDate.validate('17-03-21', date_field) + + with pytest.raises(ValidationError, match='Wrong date format'): + ValidateDate.validate('2002.03.12', date_field) + + with pytest.raises(ValidationError, match='Wrong date format'): + ValidateDate.validate('gsdfsd', date_field) + + +def test_validate_datetime(): + datetime_field = DatetimeField(False) + + assert ValidateDatetime.validate('2002-04-25 20:03:12', datetime_field) is None + + with pytest.raises(ValidationError): + ValidateDatetime.validate('2002-04-25_20:03:12', datetime_field) + + with pytest.raises(ValidationError): + ValidateDatetime.validate('2002 04 25 20:03:12', datetime_field) + + with pytest.raises(ValidationError): + ValidateDatetime.validate('2002-04-25 20:03', datetime_field) |