def send_token(sender: User,
                recipient: User,
                amount: float,
                reason_str: Optional[str] = None,
                reason_id: Optional[int] = None):
     TokenProcessor.send_token(sender, recipient, amount, reason_str,
                               reason_id)
def test_send_token(mocker, test_client, init_database,
                    initialised_blockchain_network, lang, token1_symbol,
                    token2_symbol, recipient_balance, expected_send_msg,
                    expected_receive_msg):

    org = OrganisationFactory()
    sender = UserFactory(preferred_language=lang,
                         phone=phone(),
                         first_name="Bob",
                         last_name="Foo",
                         default_organisation=org)
    token1 = Token.query.filter_by(symbol=token1_symbol).first()
    create_transfer_account_for_user(sender, token1, 20000)

    recipient = UserFactory(preferred_language=lang,
                            phone=phone(),
                            first_name="Joe",
                            last_name="Bar",
                            default_organisation=org)
    token2 = Token.query.filter_by(symbol=token2_symbol).first()
    create_transfer_account_for_user(recipient, token2, 30000)

    def mock_convert(exchange_contract, from_token, to_token, from_amount,
                     signing_address):
        if from_token.symbol == "SM1":
            return from_amount * 1.5
        else:
            return from_amount * 0.75

    mocker.patch('server.bt.get_conversion_amount', mock_convert)

    messages = []

    def mock_send_message(phone, message):
        messages.append({'phone': phone, 'message': message})

    mocker.patch('server.message_processor.send_message', mock_send_message)

    TokenProcessor.send_token(sender, recipient, 1000, "A reason", 1)
    assert default_transfer_account(sender).balance == 19000
    assert default_transfer_account(recipient).balance == recipient_balance

    assert len(messages) == 2
    sent_message = messages[0]
    assert sent_message['phone'] == sender.phone
    assert expected_send_msg in sent_message['message']
    received_message = messages[1]
    assert received_message['phone'] == recipient.phone
    assert expected_receive_msg in received_message['message']
Esempio n. 3
0
 def send_token(sender: User, recipient: User, amount: float,
                reason_str: str, reason_id: int):
     TokenProcessor.send_token(sender, recipient, amount, reason_str,
                               reason_id)