Skip to content

Commit 47bbee8

Browse files
committed
Add unit test
1 parent 4ee6df3 commit 47bbee8

File tree

1 file changed

+32
-2
lines changed

1 file changed

+32
-2
lines changed

Diff for: unit_tests/sources/declarative/transformations/test_dpath_flatten_fields.py

+32-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44

55
_ANY_VALUE = -1
66
_DELETE_ORIGIN_VALUE = True
7+
_REPLACE_WITH_VALUE = True
78
_DO_NOT_DELETE_ORIGIN_VALUE = False
9+
_DO_NOT_REPLACE_WITH_VALUE = False
810

911

1012
@pytest.mark.parametrize(
@@ -13,6 +15,7 @@
1315
"config",
1416
"field_path",
1517
"delete_origin_value",
18+
"replace_record",
1619
"expected_record",
1720
],
1821
[
@@ -21,6 +24,7 @@
2124
{},
2225
["field2"],
2326
_DO_NOT_DELETE_ORIGIN_VALUE,
27+
_DO_NOT_REPLACE_WITH_VALUE,
2428
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}, "field3": _ANY_VALUE},
2529
id="flatten by dpath, don't delete origin value",
2630
),
@@ -29,6 +33,7 @@
2933
{},
3034
["field2"],
3135
_DELETE_ORIGIN_VALUE,
36+
_DO_NOT_REPLACE_WITH_VALUE,
3237
{"field1": _ANY_VALUE, "field3": _ANY_VALUE},
3338
id="flatten by dpath, delete origin value",
3439
),
@@ -40,6 +45,7 @@
4045
{},
4146
["field2", "*", "field4"],
4247
_DO_NOT_DELETE_ORIGIN_VALUE,
48+
_DO_NOT_REPLACE_WITH_VALUE,
4349
{
4450
"field1": _ANY_VALUE,
4551
"field2": {"field3": {"field4": {"field5": _ANY_VALUE}}},
@@ -55,6 +61,7 @@
5561
{},
5662
["field2", "*", "field4"],
5763
_DELETE_ORIGIN_VALUE,
64+
_DO_NOT_REPLACE_WITH_VALUE,
5865
{"field1": _ANY_VALUE, "field2": {"field3": {}}, "field5": _ANY_VALUE},
5966
id="flatten by dpath with *, delete origin value",
6067
),
@@ -63,6 +70,7 @@
6370
{"field_path": "field2"},
6471
["{{ config['field_path'] }}"],
6572
_DO_NOT_DELETE_ORIGIN_VALUE,
73+
_DO_NOT_REPLACE_WITH_VALUE,
6674
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}, "field3": _ANY_VALUE},
6775
id="flatten by dpath from config, don't delete origin value",
6876
),
@@ -71,6 +79,7 @@
7179
{},
7280
["non-existing-field"],
7381
_DO_NOT_DELETE_ORIGIN_VALUE,
82+
_DO_NOT_REPLACE_WITH_VALUE,
7483
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}},
7584
id="flatten by non-existing dpath, don't delete origin value",
7685
),
@@ -79,6 +88,7 @@
7988
{},
8089
["*", "non-existing-field"],
8190
_DO_NOT_DELETE_ORIGIN_VALUE,
91+
_DO_NOT_REPLACE_WITH_VALUE,
8292
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}},
8393
id="flatten by non-existing dpath with *, don't delete origin value",
8494
),
@@ -87,6 +97,7 @@
8797
{},
8898
["field2"],
8999
_DO_NOT_DELETE_ORIGIN_VALUE,
100+
_DO_NOT_REPLACE_WITH_VALUE,
90101
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}, "field3": _ANY_VALUE},
91102
id="flatten by dpath, not to update when record has field conflicts, don't delete origin value",
92103
),
@@ -95,16 +106,35 @@
95106
{},
96107
["field2"],
97108
_DO_NOT_DELETE_ORIGIN_VALUE,
109+
_DO_NOT_REPLACE_WITH_VALUE,
98110
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}, "field3": _ANY_VALUE},
99111
id="flatten by dpath, not to update when record has field conflicts, delete origin value",
100112
),
113+
pytest.param(
114+
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}},
115+
{},
116+
["field2"],
117+
_DO_NOT_DELETE_ORIGIN_VALUE,
118+
_REPLACE_WITH_VALUE,
119+
{"field3": _ANY_VALUE},
120+
id="flatten by dpath, replace with value",
121+
),
122+
pytest.param(
123+
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}},
124+
{},
125+
["field2"],
126+
_DELETE_ORIGIN_VALUE,
127+
_REPLACE_WITH_VALUE,
128+
{"field3": _ANY_VALUE},
129+
id="flatten by dpath, delete_origin_value do not affect to replace_record",
130+
),
101131
],
102132
)
103133
def test_dpath_flatten_lists(
104-
input_record, config, field_path, delete_origin_value, expected_record
134+
input_record, config, field_path, delete_origin_value, replace_record, expected_record
105135
):
106136
flattener = DpathFlattenFields(
107-
field_path=field_path, parameters={}, config=config, delete_origin_value=delete_origin_value
137+
field_path=field_path, parameters={}, config=config, delete_origin_value=delete_origin_value, replace_record=replace_record
108138
)
109139
flattener.transform(input_record)
110140
assert input_record == expected_record

0 commit comments

Comments
 (0)