Skip to content

Commit 8ba9f24

Browse files
committed
Test partial column order should stay the same
1 parent 5eaf015 commit 8ba9f24

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

sqlmesh/core/test/definition.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -648,12 +648,12 @@ def _create_df(
648648
referenced_columns = list(dict.fromkeys(col for row in rows for col in row))
649649
_raise_if_unexpected_columns(columns, referenced_columns)
650650

651+
columns = [str(c) for c in columns]
651652
if partial:
652-
columns = referenced_columns
653+
# retain order of columns
654+
columns = [c for c in columns if c in referenced_columns]
653655

654-
return pd.DataFrame.from_records(
655-
rows, columns=[str(c) for c in columns] if columns else None
656-
)
656+
return pd.DataFrame.from_records(rows, columns=columns if columns else None)
657657

658658
def _add_missing_columns(
659659
self, query: exp.Query, all_columns: t.Optional[t.Collection[str]] = None

tests/core/test_test.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -770,6 +770,42 @@ def test_partial_data_column_order(sushi_context: Context) -> None:
770770
).run()
771771
)
772772

773+
# - output df must differ if sorted by (id, event_date) vs. (event_date, id)
774+
# - output partial must be true
775+
_check_successful_or_raise(
776+
_create_test(
777+
body=load_yaml(
778+
"""
779+
test_foo:
780+
model: sushi.foo
781+
inputs:
782+
sushi.items:
783+
- id: 9876
784+
event_date: 2020-01-01
785+
- id: 1234
786+
name: hello
787+
event_date: 2020-01-02
788+
outputs:
789+
partial: true
790+
query:
791+
- event_date: 2020-01-01
792+
id: 9876
793+
- event_date: 2020-01-02
794+
id: 1234
795+
name: hello
796+
"""
797+
),
798+
test_name="test_foo",
799+
model=sushi_context.upsert_model(
800+
_create_model(
801+
"SELECT id, name, price, event_date FROM sushi.items",
802+
default_catalog=sushi_context.default_catalog,
803+
)
804+
),
805+
context=sushi_context,
806+
).run()
807+
)
808+
773809

774810
def test_partial_data_missing_schemas(sushi_context: Context) -> None:
775811
_check_successful_or_raise(

0 commit comments

Comments
 (0)