import pytest from slz_config.configs import DSPSettings from slz_config.entities import DSPCompleteCriterias @pytest.mark.parametrize( 'licensor,report_type,expected_label', [ ('sme', 'users', 'SpecificLicensorSpecificReport'), ('sme', 'any', 'SpecificLicensor'), ('any', 'activity', 'SpecificReportType'), ('any', 'any', 'AnyClient'), ] ) def test_dsp_settings_find_implementation(dsp_settings, licensor, report_type, expected_label): label = dsp_settings.find_implementation_label(licensor, report_type) assert label == expected_label @pytest.mark.parametrize( 'licensor,report_type,expected_flow', [ ('sme', 'users', 'slow'), ('sme', 'any', 'standard'), ('any', 'activity', 'generic'), ('any', 'any', 'standard'), ] ) def test_dsp_settings_find_flow(dsp_settings, licensor, report_type, expected_flow): label = dsp_settings.find_implementation_flow(licensor, report_type) assert label == expected_flow def test_update_config_from_another_updated(dsp_settings): uow_config = { 'validation_thresholds': { 'low': 10, 'high': 20 }, 'uow_active_days_limit': 12, 'days_offset': 0 } expected = DSPSettings.parse( { 'uow_active_days_limit': 12, "default_priority_hrs": 24, 'implementations': [ { 'rule': 'sme/users', 'label': 'SpecificLicensorSpecificReport', 'flow': 'slow', }, { 'rule': 'sme/*', 'label': 'SpecificLicensor', 'flow': 'standard', }, { 'rule': '*/activity', 'label': 'SpecificReportType', 'flow': 'generic', }, { 'rule': '*/*', 'label': 'AnyClient', 'flow': 'standard', }, ], 'validation_thresholds': { 'low': 10, 'high': 20 }, 'days_offset': 0, } ) settings = dsp_settings.update_from_config(uow_config) assert settings != dsp_settings assert settings == expected def test_update_config_from_another_not_updated(dsp_settings): uow_config = {} settings = dsp_settings.update_from_config(uow_config) assert settings is dsp_settings assert settings == dsp_settings def test_get_criteria_for_context(): complete_criterias = DSPCompleteCriterias.parse( { 'partner': 'amazonprime', 'licensor': 'theorchard', 'report_type': 'playlist', 'complete_criteria': [{ 'context': 'ORED_US', 'required': True, 'query': 'some-query', }, ] } ) criteria = complete_criterias.get_criteria_for_context('ORED_US') assert criteria assert criteria.query == 'some-query'