def test_bool_cast_true_lowercase(self): template = UnifiedTemplate({ "type": UNIFIED_TEMPLATE_TYPE_NAME, "loader": "bool", "template": "true" }) self.assertTrue(template.render({}))
def test_bool_cast_false(self): template = UnifiedTemplate({ "type": UNIFIED_TEMPLATE_TYPE_NAME, "loader": "bool", "template": "False" }) self.assertFalse(template.render({}))
def test_type_cast_json(self): template = UnifiedTemplate({ "type": UNIFIED_TEMPLATE_TYPE_NAME, "loader": "json", "template": "{{ input }}" }) self.assertEqual([1, 2, 3], template.render({"input": [1, 2, 3]}))
def test_type_cast_int(self): template = UnifiedTemplate({ "type": UNIFIED_TEMPLATE_TYPE_NAME, "loader": "int", "template": "{{ input ** 2 }}" }) self.assertEqual(49, template.render({"input": 7}))
class RegexpInTemplateRequirement(Requirement): def __init__(self, items: Dict[str, Any], id: Optional[str] = None) -> None: super(RegexpInTemplateRequirement, self).__init__(items, id) self._template = UnifiedTemplate(items["template"]) self._regexp = re.compile(items["regexp"], re.S | re.M) def check(self, text_preprocessing_result: BaseTextPreprocessingResult, user: User, params: Dict[str, Any] = None) -> bool: params = params or {} collected = user.parametrizer.collect(text_preprocessing_result) params.update(collected) render_result = self._template.render(params) return True if self._regexp.search(render_result) else False
class TemplateInArrayRequirement(Requirement): def __init__(self, items: Dict[str, Any], id: Optional[str] = None) -> None: super(TemplateInArrayRequirement, self).__init__(items, id) self._template = UnifiedTemplate(items["template"]) self._items = set(items["items"]) def check(self, text_preprocessing_result: BaseTextPreprocessingResult, user: User, params: Dict[str, Any] = None) -> bool: params = params or {} collected = user.parametrizer.collect(text_preprocessing_result) params.update(collected) render_result = self._template.render(params) return render_result in self._items
class AddHistoryEventAction(Action): results: UnifiedTemplate event_type: UnifiedTemplate event_content: Dict[str, UnifiedTemplate] def __init__(self, items: Dict[str, Any], id: Optional[str] = None): super(AddHistoryEventAction, self).__init__(items, id) self.results = UnifiedTemplate(items.get("results")) self.event_type = UnifiedTemplate(items.get("event_type")) self.event_content = items.get("event_content") if self.event_content: for k, v in self.event_content.items(): self.event_content[k] = UnifiedTemplate(v) def run(self, user: User, text_preprocessing_result: BaseTextPreprocessingResult, params: Optional[Dict[str, Union[str, float, int]]] = None) -> None: last_scenario_id = user.last_scenarios.last_scenario_name scenario = user.descriptions["scenarios"].get(last_scenario_id) if scenario: params = user.parametrizer.collect(text_preprocessing_result) if self.event_content: for key, template in self.event_content.items(): self.event_content[key] = template.render(params) self.event_type = self.event_type.render(params) self.results = self.results.render(params) event = Event(type=self.event_type, scenario=scenario.id, scenario_version=scenario.version, results=self.results, content=self.event_content) user.history.add_event(event)
def test_support_templates(self): template = UnifiedTemplate({ "type": UNIFIED_TEMPLATE_TYPE_NAME, "support_templates": { "name": "{{ personInfo.name|capitalize }}", "surname": "{{ personInfo.surname|capitalize }}" }, "template": "{{ name }} {{ surname }}", }) self.assertEqual( "Vasya Pupkin", template.render( {"personInfo": { "name": "vasya", "surname": "pupkin" }}))
class TemplateRequirement(Requirement): def __init__(self, items: Dict[str, Any], id: Optional[str] = None) -> None: super(TemplateRequirement, self).__init__(items, id) self._template = UnifiedTemplate(items["template"]) def check(self, text_preprocessing_result: BaseTextPreprocessingResult, user: BaseUser, params: Dict[str, Any] = None) -> bool: params = params or {} collected = user.parametrizer.collect(text_preprocessing_result) params.update(collected) render_result = self._template.render(params) if render_result == "True": return True if render_result == "False": return False raise TypeError( f'Template result should be "True" or "False", got: ', f'{render_result} for template {self.items["template"]}')
def test_ordinar_jinja_backward_compatibility(self): template = UnifiedTemplate("abc {{input}}") self.assertEqual("abc def", template.render({"input": "def"}))
def test_args_format_input(self): template = UnifiedTemplate("timestamp: {{ts}}") self.assertEqual("timestamp: 123.45", template.render(ts=123.45))