From 38055bcd23527a36d77468ce2dfd0b4766e7fc00 Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 23 Jul 2019 12:26:38 +0400 Subject: =?UTF-8?q?=D0=91=D1=8D=D0=BA=D0=B5=D0=BD=D0=B4:=20=D0=94=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D1=8B,=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=B2=20=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4=D0=B0=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=B0=D1=85=20=D0=B8=20=D0=BF=D0=BE=D0=BB=D1=8F=D1=85=20=D1=81?= =?UTF-8?q?=D1=85=D0=B5=D0=BC=20=D0=B1=D0=B0=D0=B7=20=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D1=85.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Фронтенд: Добавлен компонент для показа всплывающих сообщений. --- day9/task5_vue/tests/__init__.py | 0 day9/task5_vue/tests/test_db_validators.py | 124 +++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 day9/task5_vue/tests/__init__.py create mode 100644 day9/task5_vue/tests/test_db_validators.py (limited to 'day9/task5_vue/tests') diff --git a/day9/task5_vue/tests/__init__.py b/day9/task5_vue/tests/__init__.py new file mode 100644 index 0000000..e69de29 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) -- cgit v1.2.3