cic-internal-integration/apps/cic-ussd/tests/cic_ussd/files/test_local_files.py

53 lines
1.7 KiB
Python

# standard imports
import json
import os
# third-party imports
from tinydb import Query
# local imports
from cic_ussd.files.local_files import create_local_file_data_stores, json_file_parser
from tests.fixtures.config import root_directory
from tests.helpers.tmp_files import create_tmp_file
def test_create_in_memory_data_stores():
"""
GIVEN the cic-ussd application component
WHEN the create_in_memory_data_stores function is passed a file and table name
THEN it creates a tiny dn data store that can be written to and queried
"""
descriptor, tmp_file = create_tmp_file()
test_file = create_local_file_data_stores(file_location=tmp_file, table_name='test_table')
# write to data store
test_file.insert({
'foo': 'bar'
})
query = Query()
inserted_record = test_file.get(query.foo == 'bar')
assert inserted_record == {'foo': 'bar'}
os.close(descriptor)
os.remove(tmp_file)
def test_json_file_parser(load_config):
"""
GIVEN the cic-ussd application component
WHEN the json_file_parser function is passed a directory path containing JSON files
THEN it dynamically loads all the files and compiles their content into one python array
"""
files_dir = load_config.get('MACHINE_TRANSITIONS')
files_dir = os.path.join(root_directory, files_dir)
# total files len
file_content_length = 0
for filepath in os.listdir(files_dir):
# get path of data files
filepath = os.path.join(files_dir, filepath)
with open(filepath) as data_file:
data = json.load(data_file)
file_content_length += len(data)
assert len(json_file_parser(filepath=files_dir)) == file_content_length