79 lines
1.9 KiB
Python
79 lines
1.9 KiB
Python
from sqlalchemy.orm import Session
|
|
|
|
from dibbler.models import User
|
|
from dibbler.queries import search_user
|
|
|
|
USER = [
|
|
("alice", 123),
|
|
("bob", 125),
|
|
("charlie", 126),
|
|
("david", 127),
|
|
("eve", 128),
|
|
("evey", 129),
|
|
("evy", 130),
|
|
("-symbol-man", 131),
|
|
("user_123", 132),
|
|
]
|
|
|
|
|
|
def setup_users(sql_session: Session) -> None:
|
|
for username, rfid in USER:
|
|
user = User(name=username, rfid=str(rfid))
|
|
sql_session.add(user)
|
|
sql_session.commit()
|
|
|
|
|
|
def test_search_user_exact_match(sql_session: Session) -> None:
|
|
setup_users(sql_session)
|
|
|
|
user = search_user("alice", sql_session)
|
|
assert user is not None
|
|
assert isinstance(user, User)
|
|
assert user.name == "alice"
|
|
|
|
user = search_user("125", sql_session)
|
|
assert user is not None
|
|
assert isinstance(user, User)
|
|
assert user.name == "bob"
|
|
|
|
|
|
def test_search_user_partial_match(sql_session: Session) -> None:
|
|
setup_users(sql_session)
|
|
|
|
users = search_user("ev", sql_session)
|
|
assert isinstance(users, list)
|
|
assert len(users) == 3
|
|
names = {user.name for user in users}
|
|
assert names == {"eve", "evey", "evy"}
|
|
|
|
users = search_user("user", sql_session)
|
|
assert isinstance(users, list)
|
|
assert len(users) == 1
|
|
assert users[0].name == "user_123"
|
|
|
|
|
|
def test_search_user_no_match(sql_session: Session) -> None:
|
|
setup_users(sql_session)
|
|
|
|
result = search_user("nonexistent", sql_session)
|
|
assert isinstance(result, list)
|
|
assert len(result) == 0
|
|
|
|
|
|
def test_search_user_special_characters(sql_session: Session) -> None:
|
|
setup_users(sql_session)
|
|
|
|
user = search_user("-symbol-man", sql_session)
|
|
assert user is not None
|
|
assert isinstance(user, User)
|
|
assert user.name == "-symbol-man"
|
|
|
|
|
|
def test_search_by_rfid(sql_session: Session) -> None:
|
|
setup_users(sql_session)
|
|
|
|
user = search_user("130", sql_session)
|
|
assert user is not None
|
|
assert isinstance(user, User)
|
|
assert user.name == "evy"
|