summaryrefslogtreecommitdiff
path: root/day9/task5_vue/tests
diff options
context:
space:
mode:
Diffstat (limited to 'day9/task5_vue/tests')
-rw-r--r--day9/task5_vue/tests/__init__.py0
-rw-r--r--day9/task5_vue/tests/test_db_validators.py124
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)