Ejemplo n.º 1
0
def test_raises_when_interacting_with_expired_task(max_interactions: int):
    task = TaskFactory(max_interactions=max_interactions)

    for i in range(max_interactions):
        task.interact(UserFactory())

    with pytest.raises(ValidationError):
        task.interact(UserFactory())
Ejemplo n.º 2
0
def test_task_expired_when_max_interactions_reached(max_interactions: int):
    task = TaskFactory(max_interactions=max_interactions)

    for i in range(max_interactions):
        task.interact(UserFactory())

    task.refresh_from_db()
    assert task.expired
Ejemplo n.º 3
0
def test_raises_when_non_activated_user_withdrawing(
        non_activated_user_status: ActivatedDeactivatedStatus):
    user = UserFactory(status=non_activated_user_status)
    sender = WithdrawalSenderWalletFactory(user=user,
                                           user__referrals=[UserFactory()])
    sender_balance = sender.balance
    receiver = WithdrawalReceiverWalletFactory()
    receiver_balance = receiver.balance

    with pytest.raises(ValidationError):
        WithdrawalTransactionFactory(
            amount=ProjectMoney(amount=config.MINIMUM_WITHDRAWAL_AMOUNT),
            sender=sender,
            receiver=receiver,
        )
    sender.refresh_from_db()
    assert sender.balance == sender_balance
    receiver.refresh_from_db()
    assert receiver.balance == receiver_balance
Ejemplo n.º 4
0
def test_raises_when_not_enough_balance_to_withdraw():
    # TODO: (lazy) settings
    sender_balance = ProjectMoney(amount=settings.MINIMUM_WITHDRAWAL_BALANCE)
    sender = WithdrawalSenderWalletFactory(balance=sender_balance, user__referrals=[UserFactory()])
    receiver = WithdrawalReceiverWalletFactory()
    receiver_balance = receiver.balance

    with pytest.raises(ValidationError):
        TransactionFactory(
            amount=ProjectMoney(amount=settings.MINIMUM_WITHDRAWAL_AMOUNT - 1),
            action=Action.WITHDRAW,
            sender=sender,
            receiver=receiver,
        )
    sender.refresh_from_db()
    assert sender.balance == sender_balance
    receiver.refresh_from_db()
    assert receiver.balance == receiver_balance
Ejemplo n.º 5
0
def test_raises_when_same_sender_and_receiver():
    # TODO: parametrize
    user = UserFactory()
    sender = WalletFactory(user=user, kind=WalletKind.MAIN)
    sender_balance = sender.balance
    receiver = WalletFactory(user=user, kind=WalletKind.TRANSFER)
    receiver_balance = receiver.balance

    with pytest.raises(ValidationError):
        TransactionFactory(
            amount=ProjectMoney(100),
            action=Action.TRANSFER,
            sender=sender,
            receiver=receiver,
        )
    sender.refresh_from_db()
    assert sender.balance == sender_balance
    receiver.refresh_from_db()
    assert receiver.balance == receiver_balance
Ejemplo n.º 6
0
def test_raises_when_not_enough_balance_to_transfer():
    # TODO: (lazy) settings
    sender_balance = ProjectMoney(amount=config.MINIMUM_SENDER_BALANCE +
                                  config.MINIMUM_TRANSFER_AMOUNT)
    sender = TransferSenderWalletFactory(balance=sender_balance,
                                         user__referrals=[UserFactory()])
    receiver = TransferReceiverWalletFactory()
    receiver_balance = receiver.balance

    with pytest.raises(ValidationError):
        TransactionFactory(
            amount=ProjectMoney(amount=config.MINIMUM_TRANSFER_AMOUNT - 1),
            action=Action.TRANSFER,
            sender=sender,
            receiver=receiver,
        )
    sender.refresh_from_db()
    assert sender.balance == sender_balance
    receiver.refresh_from_db()
    assert receiver.balance == receiver_balance
Ejemplo n.º 7
0
def unauthenticated_user() -> settings.AUTH_USER_MODEL:
    # Not relying on `authenticated_user` fixture so as to prevent
    # unwanted user caching over multiple fixtures.
    user = UserFactory()
    user.api_client = StrictAPIClient()
    return user
Ejemplo n.º 8
0
def authenticated_user() -> settings.AUTH_USER_MODEL:
    return UserFactory()