mirror of
https://github.com/aljazceru/python-teos.git
synced 2025-12-17 14:14:22 +01:00
83 lines
2.5 KiB
Python
83 lines
2.5 KiB
Python
from teos.appointments_dbm import AppointmentsDBM
|
|
|
|
from test.teos.unit.conftest import get_random_value_hex
|
|
|
|
|
|
stored_users = {}
|
|
|
|
|
|
def open_create_db(db_path):
|
|
|
|
try:
|
|
db_manager = AppointmentsDBM(db_path)
|
|
|
|
return db_manager
|
|
|
|
except ValueError:
|
|
return False
|
|
|
|
|
|
def test_store_user(user_db_manager):
|
|
# Store user should work as long as the user_pk is properly formatted and data is a dictionary
|
|
user_pk = "02" + get_random_value_hex(32)
|
|
user_data = {"available_slots": 42}
|
|
stored_users[user_pk] = user_data
|
|
assert user_db_manager.store_user(user_pk, user_data) is True
|
|
|
|
# Wrong pks should return False on adding
|
|
user_pk = "04" + get_random_value_hex(32)
|
|
user_data = {"available_slots": 42}
|
|
assert user_db_manager.store_user(user_pk, user_data) is False
|
|
|
|
# Same for wrong types
|
|
assert user_db_manager.store_user(42, user_data) is False
|
|
|
|
# And for wrong type user data
|
|
assert user_db_manager.store_user(user_pk, 42) is False
|
|
|
|
|
|
def test_load_user(user_db_manager):
|
|
# Loading a user we have stored should work
|
|
for user_pk, user_data in stored_users.items():
|
|
assert user_db_manager.load_user(user_pk) == user_data
|
|
|
|
# Random keys should fail
|
|
assert user_db_manager.load_user(get_random_value_hex(33)) is None
|
|
|
|
# Wrong format keys should also return None
|
|
assert user_db_manager.load_user(42) is None
|
|
|
|
|
|
def test_delete_user(user_db_manager):
|
|
# Deleting an existing user should work
|
|
for user_pk, user_data in stored_users.items():
|
|
assert user_db_manager.delete_user(user_pk) is True
|
|
|
|
for user_pk, user_data in stored_users.items():
|
|
assert user_db_manager.load_user(user_pk) is None
|
|
|
|
# But deleting a non existing one should not fail
|
|
assert user_db_manager.delete_user(get_random_value_hex(32)) is True
|
|
|
|
# Keys of wrong type should fail
|
|
assert user_db_manager.delete_user(42) is False
|
|
|
|
|
|
def test_load_all_users(user_db_manager):
|
|
# There should be no users at the moment
|
|
assert user_db_manager.load_all_users() == {}
|
|
stored_users = {}
|
|
|
|
# Adding some and checking we get them all
|
|
for i in range(10):
|
|
user_pk = "02" + get_random_value_hex(32)
|
|
user_data = {"available_slots": i}
|
|
user_db_manager.store_user(user_pk, user_data)
|
|
stored_users[user_pk] = user_data
|
|
|
|
all_users = user_db_manager.load_all_users()
|
|
|
|
assert set(all_users.keys()) == set(stored_users.keys())
|
|
for k, v in all_users.items():
|
|
assert stored_users[k] == v
|