-
Notifications
You must be signed in to change notification settings - Fork 73
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: Force flattened record according to provided flattened schema (#…
…2243) * Force flattened record according to provided flattened schema * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix import * fix * revert collections change * ruff linter fixes * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * ruff linter fixes * fix * fix * add test * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * removing None option for flatten schema and max level * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * revert typing * fix check * Add a short comment --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Edgar Ramírez Mondragón <16805946+edgarrmondragon@users.noreply.github.com> Co-authored-by: Edgar Ramírez-Mondragón <edgarrm358@gmail.com>
- Loading branch information
1 parent
15a22ef
commit d9484a7
Showing
2 changed files
with
82 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
from __future__ import annotations | ||
|
||
import pytest | ||
|
||
from singer_sdk.helpers._flattening import flatten_record | ||
|
||
|
||
@pytest.mark.parametrize( | ||
"flattened_schema, max_level, expected", | ||
[ | ||
pytest.param( | ||
{ | ||
"properties": { | ||
"key_1": {"type": ["null", "integer"]}, | ||
"key_2__key_3": {"type": ["null", "string"]}, | ||
"key_2__key_4": {"type": ["null", "object"]}, | ||
} | ||
}, | ||
99, | ||
{ | ||
"key_1": 1, | ||
"key_2__key_3": "value", | ||
"key_2__key_4": '{"key_5": 1, "key_6": ["a", "b"]}', | ||
}, | ||
id="flattened schema limiting the max level", | ||
), | ||
pytest.param( | ||
{ | ||
"properties": { | ||
"key_1": {"type": ["null", "integer"]}, | ||
"key_2__key_3": {"type": ["null", "string"]}, | ||
"key_2__key_4__key_5": {"type": ["null", "integer"]}, | ||
"key_2__key_4__key_6": {"type": ["null", "array"]}, | ||
} | ||
}, | ||
99, | ||
{ | ||
"key_1": 1, | ||
"key_2__key_3": "value", | ||
"key_2__key_4__key_5": 1, | ||
"key_2__key_4__key_6": '["a", "b"]', | ||
}, | ||
id="flattened schema not limiting the max level", | ||
), | ||
pytest.param( | ||
{ | ||
"properties": { | ||
"key_1": {"type": ["null", "integer"]}, | ||
"key_2__key_3": {"type": ["null", "string"]}, | ||
"key_2__key_4__key_5": {"type": ["null", "integer"]}, | ||
"key_2__key_4__key_6": {"type": ["null", "array"]}, | ||
} | ||
}, | ||
1, | ||
{ | ||
"key_1": 1, | ||
"key_2__key_3": "value", | ||
"key_2__key_4": '{"key_5": 1, "key_6": ["a", "b"]}', | ||
}, | ||
id="max level limiting flattened schema", | ||
), | ||
], | ||
) | ||
def test_flatten_record(flattened_schema, max_level, expected): | ||
"""Test flatten_record to obey the max_level and flattened_schema parameters.""" | ||
record = { | ||
"key_1": 1, | ||
"key_2": {"key_3": "value", "key_4": {"key_5": 1, "key_6": ["a", "b"]}}, | ||
} | ||
|
||
result = flatten_record( | ||
record, max_level=max_level, flattened_schema=flattened_schema | ||
) | ||
assert expected == result |