def test_optional_survey_question_defaults(survey_spec_factory, question_type, default, min, max, expect_use, expect_value): spec = survey_spec_factory([ { "required": False, "default": default, "choices": "orange\nmilk\nchocolate\ncoffee", "variable": "c", "min": min, "max": max, "type": question_type }, ]) jt = JobTemplate(name="test-jt", survey_spec=spec, survey_enabled=True) defaulted_extra_vars = jt._update_unified_job_kwargs({}, {}) element = spec['spec'][0] if expect_use: assert jt._survey_element_validation( element, {element['variable']: element['default']}) == [] else: assert jt._survey_element_validation( element, {element['variable']: element['default']}) if expect_use: assert json.loads( defaulted_extra_vars['extra_vars'])['c'] == expect_value else: assert 'c' not in defaulted_extra_vars['extra_vars']
def test_update_kwargs_survey_invalid_default(survey_spec_factory): spec = survey_spec_factory('var2') spec['spec'][0]['required'] = False spec['spec'][0]['min'] = 3 spec['spec'][0]['default'] = 1 jt = JobTemplate(name="test-jt", survey_spec=spec, survey_enabled=True, extra_vars="var2: 2") defaulted_extra_vars = jt._update_unified_job_kwargs({}, {}) assert 'extra_vars' in defaulted_extra_vars # Make sure we did not set the invalid default of 1 assert json.loads(defaulted_extra_vars['extra_vars'])['var2'] == 2
def test_survey_encryption_defaults(survey_spec_factory, question_type, default, maxlen, kwargs, expected): spec = survey_spec_factory([ { "required": True, "variable": "x", "min": 0, "max": maxlen, "type": question_type }, ]) if default is not None: spec['spec'][0]['default'] = default else: spec['spec'][0].pop('default', None) jt = JobTemplate(name="test-jt", survey_spec=spec, survey_enabled=True) extra_vars = json.loads(jt._update_unified_job_kwargs({}, kwargs).get('extra_vars')) assert extra_vars == expected