kaxil commented on a change in pull request #7633: [AIRFLOW-6989] Display
Rendered template_fields without accessing Dagfiles
URL: https://github.com/apache/airflow/pull/7633#discussion_r391614501
##########
File path: tests/serialization/test_dag_serialization.py
##########
@@ -538,6 +539,77 @@ def
test_extra_serialized_field_and_multiple_operator_links(self):
google_link_from_plugin = simple_task.get_extra_links(test_date,
GoogleLink.name)
self.assertEqual("https://www.google.com", google_link_from_plugin)
+ class ClassWithCustomAttributes:
+ """
+ Class for testing purpose: allows to create objects with custom
attributes in one single statement.
+ """
+
+ def __init__(self, **kwargs):
+ for key, value in kwargs.items():
+ setattr(self, key, value)
+
+ def __str__(self):
+ return "{}({})".format(self.__class__.__name__, str(self.__dict__))
+
+ def __repr__(self):
+ return self.__str__()
+
+ def __eq__(self, other):
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ return not self.__eq__(other)
+
+ @parameterized.expand([
+ (None, None),
+ ([], []),
+ ({}, {}),
+ ("{{ task.task_id }}", "{{ task.task_id }}"),
+ (["{{ task.task_id }}", "{{ task.task_id }}"]),
+ ({"foo": "{{ task.task_id }}"}, {"foo": "{{ task.task_id }}"}),
+ ({"foo": {"bar": "{{ task.task_id }}"}}, {"foo": {"bar": "{{
task.task_id }}"}}),
+ (
+ [{"foo1": {"bar": "{{ task.task_id }}"}}, {"foo2": {"bar": "{{
task.task_id }}"}}],
+ [{"foo1": {"bar": "{{ task.task_id }}"}}, {"foo2": {"bar": "{{
task.task_id }}"}}],
+ ),
+ (
+ {"foo": {"bar": {"{{ task.task_id }}": ["sar"]}}},
+ {"foo": {"bar": {"{{ task.task_id }}": ["sar"]}}}),
+ (
+ ClassWithCustomAttributes(
+ att1="{{ task.task_id }}", att2="{{ task.task_id }}",
template_fields=["att1"]),
+ "ClassWithCustomAttributes("
+ "{'att1': '{{ task.task_id }}', 'att2': '{{ task.task_id }}',
'template_fields': ['att1']})",
+ ),
+ (
+
ClassWithCustomAttributes(nested1=ClassWithCustomAttributes(att1="{{
task.task_id }}",
+
att2="{{ task.task_id }}",
+
template_fields=["att1"]),
+
nested2=ClassWithCustomAttributes(att3="{{ task.task_id }}",
+
att4="{{ task.task_id }}",
+
template_fields=["att3"]),
+ template_fields=["nested1"]),
+ "ClassWithCustomAttributes("
+ "{'nested1': ClassWithCustomAttributes({'att1': '{{ task.task_id
}}', "
+ "'att2': '{{ task.task_id }}', 'template_fields': ['att1']}), "
+ "'nested2': ClassWithCustomAttributes({'att3': '{{ task.task_id
}}', "
+ "'att4': '{{ task.task_id }}', 'template_fields': ['att3']}),
'template_fields': ['nested1']})",
+ ),
+ ])
+ def test_templated_fields_exist_in_serialized_dag(self, templated_field,
expected_field):
+ """
+ Test that templated_fields exists for all Operators in Serialized DAG
Review comment:
Updated
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services