70 lines
3.4 KiB
Python
70 lines
3.4 KiB
Python
# standard imports
|
|
import json
|
|
|
|
# external imports
|
|
from cic_types.condiments import MetadataPointer
|
|
|
|
# local imports
|
|
from cic_ussd.cache import cache_data_key, get_cached_data
|
|
from cic_ussd.state_machine.logic.tokens import (is_valid_token_selection,
|
|
process_token_selection,
|
|
set_selected_active_token)
|
|
from cic_ussd.account.tokens import get_cached_token_data_list
|
|
|
|
|
|
# test imports
|
|
|
|
|
|
def test_is_valid_token_selection(activated_account,
|
|
cache_token_data_list,
|
|
cache_token_symbol_list,
|
|
cached_ussd_session,
|
|
init_cache,
|
|
init_database):
|
|
cached_token_data_list = get_cached_token_data_list(activated_account.blockchain_address)
|
|
ussd_session = get_cached_data(cached_ussd_session.external_session_id)
|
|
ussd_session = json.loads(ussd_session)
|
|
ussd_session['data'] = {'account_tokens_list': cached_token_data_list}
|
|
state_machine_data = ('GFT', ussd_session, activated_account, init_database)
|
|
assert is_valid_token_selection(state_machine_data) is True
|
|
state_machine_data = ('1', ussd_session, activated_account, init_database)
|
|
assert is_valid_token_selection(state_machine_data) is True
|
|
state_machine_data = ('3', ussd_session, activated_account, init_database)
|
|
assert is_valid_token_selection(state_machine_data) is False
|
|
|
|
|
|
def test_process_token_selection(activated_account,
|
|
cache_token_data_list,
|
|
cache_token_symbol_list,
|
|
cached_ussd_session,
|
|
celery_session_worker,
|
|
init_cache,
|
|
init_database):
|
|
cached_token_data_list = get_cached_token_data_list(activated_account.blockchain_address)
|
|
ussd_session = get_cached_data(cached_ussd_session.external_session_id)
|
|
ussd_session = json.loads(ussd_session)
|
|
ussd_session['data'] = {'account_tokens_list': cached_token_data_list}
|
|
state_machine_data = ('GFT', ussd_session, activated_account, init_database)
|
|
process_token_selection(state_machine_data)
|
|
ussd_session = get_cached_data(cached_ussd_session.external_session_id)
|
|
ussd_session = json.loads(ussd_session)
|
|
assert ussd_session.get('data').get('selected_token').get('symbol') == 'GFT'
|
|
|
|
|
|
def test_set_selected_active_token(activated_account,
|
|
cache_token_data_list,
|
|
cache_token_symbol_list,
|
|
cached_ussd_session,
|
|
init_cache,
|
|
init_database):
|
|
cached_token_data_list = get_cached_token_data_list(activated_account.blockchain_address)
|
|
ussd_session = get_cached_data(cached_ussd_session.external_session_id)
|
|
ussd_session = json.loads(ussd_session)
|
|
ussd_session['data'] = {'selected_token': cached_token_data_list[0]}
|
|
state_machine_data = ('GFT', ussd_session, activated_account, init_database)
|
|
set_selected_active_token(state_machine_data)
|
|
identifier = bytes.fromhex(activated_account.blockchain_address)
|
|
key = cache_data_key(identifier=identifier, salt=MetadataPointer.TOKEN_ACTIVE)
|
|
active_token = get_cached_data(key)
|
|
assert active_token == 'GFT'
|