53 lines
2.5 KiB
Python
53 lines
2.5 KiB
Python
# standard imports
|
|
import json
|
|
|
|
# external imports
|
|
import requests_mock
|
|
from cic_types.condiments import MetadataPointer
|
|
|
|
# local imports
|
|
from cic_ussd.cache import cache_data_key, get_cached_data
|
|
from cic_ussd.metadata import PreferencesMetadata
|
|
from cic_ussd.state_machine.logic.language import (change_preferred_language,
|
|
is_valid_language_selection,
|
|
preferred_langauge_from_selection,
|
|
process_language_selection)
|
|
|
|
# test imports
|
|
|
|
|
|
def test_change_preferred_language(activated_account,
|
|
cached_ussd_session,
|
|
celery_session_worker,
|
|
init_database,
|
|
load_languages,
|
|
mocker,
|
|
setup_metadata_signer,
|
|
setup_metadata_request_handler):
|
|
ussd_session = get_cached_data(cached_ussd_session.external_session_id)
|
|
ussd_session = json.loads(ussd_session)
|
|
preferences = {
|
|
'preferred_language': 'en'
|
|
}
|
|
ussd_session['data'] = preferences
|
|
mock_add_preferences_metadata = mocker.patch('cic_ussd.tasks.metadata.add_preferences_metadata.apply_async')
|
|
with requests_mock.Mocker(real_http=False) as request_mocker:
|
|
identifier = bytes.fromhex(activated_account.blockchain_address)
|
|
metadata_client = PreferencesMetadata(identifier=identifier)
|
|
request_mocker.register_uri('POST', metadata_client.url, status_code=201, reason='CREATED', json=preferences)
|
|
state_machine_data = ('1', ussd_session, activated_account, init_database)
|
|
change_preferred_language(state_machine_data)
|
|
mock_add_preferences_metadata.assert_called_with(
|
|
(activated_account.blockchain_address, preferences), {}, queue='cic-ussd')
|
|
|
|
|
|
def test_is_valid_language_selection(activated_account,
|
|
generic_ussd_session,
|
|
init_cache,
|
|
init_database,
|
|
load_languages):
|
|
state_machine_data = ('1', generic_ussd_session, activated_account, init_database)
|
|
assert is_valid_language_selection(state_machine_data) is True
|
|
state_machine_data = ('12', generic_ussd_session, activated_account, init_database)
|
|
assert is_valid_language_selection(state_machine_data) is False
|