from unittest.mock import patch import pytest from tadas.domain import constants from tadas.platform import context def test_create_context(): new_context = { 'k1': 'v1', 'k2': 123, } context.set_context(contex=new_context) assert context.load_context() == new_context def test_clean_context(): new_context = { 'k1': 'v1', 'k2': 123, } context.set_context(contex=new_context) context.clean_context() assert context.load_context() == {} def test_add_context(): new_context = { 'k1': 'v1', 'k2': 123, } context.clean_context() with context.add_context(contex=new_context): assert context.load_context() == { 'k1': 'v1', 'k2': 123, } override_context = { 'k1': 'v2', 'k3': 'v3', } with context.add_context(contex=override_context): assert context.load_context() == { 'k1': 'v2', 'k3': 'v3', 'k2': 123, } assert context.load_context() == { 'k1': 'v1', 'k2': 123, } assert context.load_context() == {} @pytest.mark.parametrize( 'report, expected_result', [ (constants.REPORT_GLOBAL, 'tadas_global'), (constants.REPORT_COUNTRIES, 'tadas_countries'), ] ) def test_get_feed_name(report, expected_result): assert context.get_feed_name(report=report) == expected_result def test_get_context_id(): with patch.object(context, '_gen_rand_id', return_value='XXXX'): assert context.get_context_id( model_version='aversion', report=constants.REPORT_GLOBAL, ) == 'tadas_aversion_global XXXX' @pytest.mark.parametrize('length', [4, 16, 132]) def test_gen_rand_id(length): value = context._gen_rand_id(length=length) assert len(value) == length assert value.isalnum()