mirror of
https://github.com/stijndcl/didier.git
synced 2026-04-07 15:48:29 +02:00
Write some tests for currency crud
This commit is contained in:
parent
8da0eb0b2a
commit
61128dda92
5 changed files with 112 additions and 10 deletions
|
|
@ -0,0 +1,81 @@
|
|||
import pytest
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from database.crud import currency as crud
|
||||
from database.exceptions import currency as exceptions
|
||||
from database.models import Bank
|
||||
|
||||
|
||||
DEBUG_USER_ID = 1
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
async def bank(database_session: AsyncSession) -> Bank:
|
||||
_bank = await crud.get_bank(database_session, DEBUG_USER_ID)
|
||||
await database_session.refresh(_bank)
|
||||
return _bank
|
||||
|
||||
|
||||
async def test_add_dinks(database_session: AsyncSession, bank: Bank):
|
||||
"""Test adding dinks to an account"""
|
||||
assert bank.dinks == 0
|
||||
await crud.add_dinks(database_session, bank.user_id, 10)
|
||||
await database_session.refresh(bank)
|
||||
assert bank.dinks == 10
|
||||
|
||||
|
||||
async def test_claim_nightly_available(database_session: AsyncSession, bank: Bank):
|
||||
"""Test claiming nightlies when it hasn't been done yet"""
|
||||
await crud.claim_nightly(database_session, bank.user_id)
|
||||
await database_session.refresh(bank)
|
||||
assert bank.dinks == crud.NIGHTLY_AMOUNT
|
||||
|
||||
|
||||
async def test_claim_nightly_unavailable(database_session: AsyncSession, bank: Bank):
|
||||
"""Test claiming nightlies twice in a day"""
|
||||
await crud.claim_nightly(database_session, bank.user_id)
|
||||
|
||||
with pytest.raises(exceptions.DoubleNightly):
|
||||
await crud.claim_nightly(database_session, bank.user_id)
|
||||
|
||||
await database_session.refresh(bank)
|
||||
assert bank.dinks == crud.NIGHTLY_AMOUNT
|
||||
|
||||
|
||||
async def test_invest(database_session: AsyncSession, bank: Bank):
|
||||
"""Test investing some Dinks"""
|
||||
bank.dinks = 100
|
||||
database_session.add(bank)
|
||||
await database_session.commit()
|
||||
|
||||
await crud.invest(database_session, bank.user_id, 20)
|
||||
await database_session.refresh(bank)
|
||||
|
||||
assert bank.dinks == 80
|
||||
assert bank.invested == 20
|
||||
|
||||
|
||||
async def test_invest_all(database_session: AsyncSession, bank: Bank):
|
||||
"""Test investing all dinks"""
|
||||
bank.dinks = 100
|
||||
database_session.add(bank)
|
||||
await database_session.commit()
|
||||
|
||||
await crud.invest(database_session, bank.user_id, "all")
|
||||
await database_session.refresh(bank)
|
||||
|
||||
assert bank.dinks == 0
|
||||
assert bank.invested == 100
|
||||
|
||||
|
||||
async def test_invest_more_than_owned(database_session: AsyncSession, bank: Bank):
|
||||
"""Test investing more Dinks than you own"""
|
||||
bank.dinks = 100
|
||||
database_session.add(bank)
|
||||
await database_session.commit()
|
||||
|
||||
await crud.invest(database_session, bank.user_id, 200)
|
||||
await database_session.refresh(bank)
|
||||
|
||||
assert bank.dinks == 0
|
||||
assert bank.invested == 100
|
||||
|
|
@ -48,3 +48,18 @@ def test_abbreviated_float_floors():
|
|||
5.3k is 5300, but 5.3001k is 5300.1
|
||||
"""
|
||||
assert numbers.abbreviated_number("5.3001k") == 5300
|
||||
|
||||
|
||||
def test_abbreviated_all():
|
||||
"""Test abbreviated_number for the 'all' argument"""
|
||||
assert numbers.abbreviated_number("all") == "all"
|
||||
assert numbers.abbreviated_number("ALL") == "all"
|
||||
|
||||
|
||||
def test_abbreviated_empty():
|
||||
"""Test abbreviated_number for empty arguments"""
|
||||
with pytest.raises(ValueError):
|
||||
numbers.abbreviated_number("")
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
numbers.abbreviated_number(None)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue