Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion bot/application/student/validators/discord_id_validator.py
Original file line number Diff line number Diff line change
@@ -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
)
24 changes: 24 additions & 0 deletions tests/application/validators/test_discord_id_validator.py
Original file line number Diff line number Diff line change
@@ -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)
49 changes: 49 additions & 0 deletions tests/application/validators/test_name_validator.py
Original file line number Diff line number Diff line change
@@ -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)
24 changes: 21 additions & 3 deletions tests/application/validators/test_ni_validator.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Loading