def test_fetch_exchange_rate(mocker, test_client, init_database, initialised_blockchain_network, user_type, preferred_language, exchange_text, limit_text): user = UserFactory(preferred_language=preferred_language, phone=phone()) if user_type == "group": user.set_held_role('GROUP_ACCOUNT', 'grassroots_group_account') user.is_phone_verified = True kyc = KycApplication(type='INDIVIDUAL') kyc.user = user kyc.kyc_status = 'VERIFIED' token1 = Token.query.filter_by(symbol="SM1").first() create_transfer_account_for_user(user, token1, 20000) def mock_convert(exchange_contract, from_token, to_token, from_amount): return from_amount * 1.2 mocker.patch('server.bt.get_conversion_amount', mock_convert) def mock_send_message(phone, message): assert exchange_text in message assert limit_text in message mocker.patch('server.utils.phone.send_message', mock_send_message) TokenProcessor.fetch_exchange_rate(user)
def test_send_balance_sms(mocker, test_client, init_database, initialised_blockchain_network, user_type, limit, preferred_language, sample_text): user = UserFactory(preferred_language=preferred_language, phone=phone()) if user_type == "group": user.set_held_role('GROUP_ACCOUNT', 'grassroots_group_account') user.is_phone_verified = True kyc = KycApplication(type='INDIVIDUAL') kyc.user = user kyc.kyc_status = 'VERIFIED' token1 = Token.query.filter_by(symbol="SM1").first() token2 = Token.query.filter_by(symbol="SM2").first() token3 = Token.query.filter_by(symbol="SM3").first() create_transfer_account_for_user(user, token1, 20000) create_transfer_account_for_user(user, token2, 35000, is_default=False) # this one should not show up in balance create_transfer_account_for_user(user, token3, 0, is_default=False, is_ghost=True) def mock_convert(exchange_contract, from_token, to_token, from_amount): if from_token.symbol == "SM1": return from_amount * 1.4124333344353534 else: return from_amount * 0.8398339289133232 mocker.patch('server.bt.get_conversion_amount', mock_convert) def mock_send_message(phone, message): assert sample_text in message assert "SM1 200" in message assert "SM2 350" in message assert "SM3" not in message if limit: assert "{:.2f} SM1 (1 SM1 = 1.41 AUD)".format(limit * 200) in message assert "{:.2f} SM2 (1 SM2 = 0.84 AUD)".format(limit * 350) in message mocker.patch('server.utils.phone.send_message', mock_send_message) TokenProcessor.send_balance_sms(user)