Stabilize staff concurrency and premium emoji; enable verified Drone deployment
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
33
tests/test_imports_exports.py
Normal file
33
tests/test_imports_exports.py
Normal file
@@ -0,0 +1,33 @@
|
||||
from io import BytesIO
|
||||
|
||||
from openpyxl import load_workbook
|
||||
from sqlalchemy import select
|
||||
|
||||
from src.core.database import async_session_maker
|
||||
from src.core.models import User
|
||||
from src.core.import_services import import_users
|
||||
from src.core.services import UserService
|
||||
from src.utils.spreadsheets import export_users, read_users_xlsx
|
||||
|
||||
|
||||
async def test_excel_formulas_remain_literal_text():
|
||||
async with async_session_maker() as session:
|
||||
user = await UserService.get_or_create_user(session, 501, first_name='=HYPERLINK("https://invalid.example")')
|
||||
data = export_users([user])
|
||||
workbook = load_workbook(BytesIO(data), data_only=False)
|
||||
assert workbook.active.cell(2, 3).data_type == "s"
|
||||
assert read_users_xlsx(data)[0]["first_name"] == user.first_name
|
||||
workbook.close()
|
||||
|
||||
|
||||
async def test_import_duplicate_card_does_not_break_following_rows_or_elevate_roles():
|
||||
added, updated, errors = await import_users([
|
||||
dict(telegram_id=502, club_card_number="5678", is_registered=True, is_admin=True, is_cashier=True),
|
||||
dict(telegram_id=503, club_card_number="5678"),
|
||||
dict(telegram_id=504, club_card_number="6789"),
|
||||
])
|
||||
assert (added, updated, errors) == (2, 0, 1)
|
||||
async with async_session_maker() as session:
|
||||
user = await session.scalar(select(User).where(User.telegram_id == 502))
|
||||
assert not user.is_admin and not user.is_cashier and user.verification_code
|
||||
assert await session.scalar(select(User.id).where(User.telegram_id == 504))
|
||||
Reference in New Issue
Block a user