cic-internal-integration/apps/cic-ussd/tests/fixtures/ussd_session.py

53 lines
1.9 KiB
Python

# standard imports
import json
# third-party imports
import pytest
# local imports
from cic_ussd.db.models.ussd_session import UssdSession
from cic_ussd.redis import InMemoryStore
from cic_ussd.session.ussd_session import UssdSession as InMemoryUssdSession
@pytest.fixture(scope='function')
def ussd_session_data():
return {
'external_session_id': 'AT974186',
'service_code': '*483*46#',
'msisdn': '+25498765432',
'user_input': '1',
'state': 'initial_language_selection',
'session_data': {},
'version': 2
}
@pytest.fixture(scope='function')
def create_in_redis_ussd_session(ussd_session_data, init_redis_cache):
external_session_id = ussd_session_data.get('external_session_id')
InMemoryUssdSession.redis_cache = InMemoryStore.cache
InMemoryUssdSession.redis_cache.set(external_session_id, json.dumps(ussd_session_data))
return InMemoryUssdSession.redis_cache
@pytest.fixture(scope='function')
def get_in_redis_ussd_session(ussd_session_data, create_in_redis_ussd_session):
external_session_id = ussd_session_data.get('external_session_id')
ussd_session_data = create_in_redis_ussd_session.get(external_session_id)
ussd_session_data = json.loads(ussd_session_data)
# remove version from ussd_session data because the ussd_session object does not expect a version at initialization
del ussd_session_data['version']
ussd_session = InMemoryUssdSession(**{key: value for key, value in ussd_session_data.items()})
ussd_session.version = ussd_session_data.get('version')
return ussd_session
@pytest.fixture(scope='function')
def create_in_db_ussd_session(init_database, ussd_session_data):
ussd_session_data['session_data'] = {}
ussd_session = UssdSession(**{key: value for key, value in ussd_session_data.items()})
init_database.add(ussd_session)
init_database.commit()
return ussd_session