diff --git a/bot/application/student/validators/discord_id_validator.py b/bot/application/student/validators/discord_id_validator.py index a4fa63d..8527a04 100644 --- a/bot/application/student/validators/discord_id_validator.py +++ b/bot/application/student/validators/discord_id_validator.py @@ -1,9 +1,14 @@ class DiscordIdValidator: + OLD_DISCORD_ID_DIGITS_COUNT = 17 DISCORD_ID_DIGITS_COUNT = 18 def __init__(self): pass def validate(self, discord_id: int) -> bool: - return len(str(discord_id)) == self.DISCORD_ID_DIGITS_COUNT + id_length = len(str(discord_id)) + return ( + id_length == self.OLD_DISCORD_ID_DIGITS_COUNT + or id_length == self.DISCORD_ID_DIGITS_COUNT + ) diff --git a/tests/application/validators/test_discord_id_validator.py b/tests/application/validators/test_discord_id_validator.py new file mode 100644 index 0000000..b4dc3d1 --- /dev/null +++ b/tests/application/validators/test_discord_id_validator.py @@ -0,0 +1,24 @@ +import pytest + +from bot.application.student.validators.discord_id_validator import DiscordIdValidator + +DISCORD_ID: int = 123456789012749572 +OLD_DISCORD_ID: int = 1234567891023567 +INVALID_LENGTH_DISCORD_ID: int = 2133 + + +@pytest.fixture +def discord_id_validator() -> DiscordIdValidator: + return DiscordIdValidator() + + +def test__when_using_old_discord_id__then_return_true(discord_id_validator): + assert not discord_id_validator.validate(OLD_DISCORD_ID) + + +def test__when_using_discord_id__then_return_true(discord_id_validator): + assert discord_id_validator.validate(DISCORD_ID) + + +def test__when_using_invalid_length_discord_id__then_return_false(discord_id_validator): + assert not discord_id_validator.validate(INVALID_LENGTH_DISCORD_ID) diff --git a/tests/application/validators/test_name_validator.py b/tests/application/validators/test_name_validator.py new file mode 100644 index 0000000..f450c4c --- /dev/null +++ b/tests/application/validators/test_name_validator.py @@ -0,0 +1,49 @@ +import pytest + +from bot.application.student.validators.name_validator import NameValidator + +NAME: str = "Clemou Delta" +COMPOSED_NAME: str = "Clemou-Delta" +TOO_LONG_NAME: str = "Jean-Pierre Alexandre-François de la Fontaine" +EMPTY_NAME: str = "" +CAMEL_CASE_NAME: str = "clemou delta" +CAMEL_CASE_COMPOSED_NAME: str = "clemou-delta" +UPPER_CASE_NAME: str = "CLEMOU DELTA" +UPPER_CASE_COMPOSED_NAME: str = "CLEMOU-DELTA" + + +@pytest.fixture +def name_validator() -> NameValidator: + return NameValidator() + + +def test__when_using_valid_name__then_return_true(name_validator): + assert name_validator.validate(NAME) + + +def test_when_using_composed_name__then_return_true(name_validator): + assert name_validator.validate(COMPOSED_NAME) + + +def test__when_using_too_long_name__then_return_false(name_validator): + assert not name_validator.validate(TOO_LONG_NAME) + + +def test__when_using_empty_name__then_return_false(name_validator): + assert not name_validator.validate(EMPTY_NAME) + + +def test__when_using_camel_case_name__then_return_false(name_validator): + assert not name_validator.validate(CAMEL_CASE_NAME) + + +def test__when_using_camel_composed_name__then_return_false(name_validator): + assert not name_validator.validate(CAMEL_CASE_COMPOSED_NAME) + + +def test__when_using_upper_case_name__then_return_false(name_validator): + assert not name_validator.validate(UPPER_CASE_NAME) + + +def test__when_using_upper_composed_name__then_return_false(name_validator): + assert not name_validator.validate(UPPER_CASE_COMPOSED_NAME) diff --git a/tests/application/validators/test_ni_validator.py b/tests/application/validators/test_ni_validator.py index 23c57c8..4ec20b5 100644 --- a/tests/application/validators/test_ni_validator.py +++ b/tests/application/validators/test_ni_validator.py @@ -2,10 +2,28 @@ from bot.application.student.validators.ni_validator import NIValidator +NI: str = "111222333" +INVALID_DIGIT_LEN_NI: str = "11122233" +NON_DIGIT_NI: str = "abcdefghi" +LETTER_AND_DIGIT_NI: str = "123abc456" + @pytest.fixture -def ni_validator(): +def ni_validator() -> NIValidator: return NIValidator() -def test_ni_true(ni_validator): - assert ni_validator.validate("111228454") + +def test__when_validate_valid_ni__should_return_true(ni_validator): + assert ni_validator.validate(NI) + + +def test__when_validate_invalid_length_ni__should_return_false(ni_validator): + assert not ni_validator.validate(INVALID_DIGIT_LEN_NI) + + +def test__when_validate_non_digit_ni_should__return_false(ni_validator): + assert not ni_validator.validate(NON_DIGIT_NI) + + +def test__when_validate_letter_and_digit_ni__should_return_false(ni_validator): + assert not ni_validator.validate(LETTER_AND_DIGIT_NI)