Skip to content

Commit 4a31ef9

Browse files
committed
test: additional tests with record index for entity empty check functions
1 parent 309da97 commit 4a31ef9

3 files changed

Lines changed: 24 additions & 1 deletion

File tree

‎src/dve/core_engine/backends/implementations/duckdb/duckdb_helpers.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def relation_is_empty(relation: DuckDBPyRelation) -> bool:
116116
cl_all_null_check_exprs = [
117117
f'bool_and("{cl}" is NULL)' for cl in relation.columns if cl != RECORD_INDEX_COLUMN_NAME
118118
]
119-
return relation.aggregate(" AND ".join(cl_all_null_check_exprs)).fetchone()[0] # type: ignore
119+
return relation.aggregate(" AND ".join(cl_all_null_check_exprs)).fetchone()[0] # type: ignore
120120

121121

122122
def get_duckdb_type_from_annotation(type_annotation: Any) -> DuckDBPyType:

‎tests/test_core_engine/test_backends/test_implementations/test_duckdb/test_duckdb_helpers.py‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
relation_is_empty
2626
)
2727
from dve.core_engine.backends.utilities import datetime_format_to_regex
28+
from dve.core_engine.constants import RECORD_INDEX_COLUMN_NAME
2829
from dve.metadata_parser.domain_types import formatteddatetime
2930

3031
@pytest.fixture
@@ -272,6 +273,12 @@ def test_relation_is_empty(temp_ddb_conn: DuckDBPyConnection):
272273

273274
rel3 = con.sql("SELECT 1 as fld1, NULL as fld2 UNION ALL SELECT NULL as fld1, NULL as fld2")
274275
assert not relation_is_empty(rel3)
276+
277+
rel4 = con.sql(f"SELECT 1 as {RECORD_INDEX_COLUMN_NAME}, NULL as fld1, NULL as fld2 UNION ALL SELECT 2, NULL, NULL")
278+
assert relation_is_empty(rel4)
279+
280+
rel5 = con.sql(f"SELECT 1 as {RECORD_INDEX_COLUMN_NAME}, NULL as fld1, NULL as fld2 UNION ALL SELECT 2, NULL, 'hello'")
281+
assert not relation_is_empty(rel5)
275282

276283
@pytest.mark.parametrize("date_format, expected_regex", [("%Y-%m-%d", r"^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$"),
277284
("%Y-%m-%dT%H:%M:%S", r"^[0-9]{4}\-[0-9]{2}\-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$"),

‎tests/test_core_engine/test_backends/test_implementations/test_spark/test_spark_helpers.py‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
python_to_java_datetime_format,
3333
df_is_empty
3434
)
35+
from dve.core_engine.constants import RECORD_INDEX_COLUMN_NAME
3536
from dve.metadata_parser.domain_types import conformatteddate
3637

3738
from .....fixtures import spark # pylint: disable=unused-import
@@ -366,5 +367,20 @@ def test_df_is_empty(spark):
366367
df3 = spark.createDataFrame([(None, None), (None, None), (None, 3)],
367368
schema=StructType([StructField("col1", StringType()), StructField("col2", LongType())]))
368369
assert not df_is_empty(df3)
370+
371+
_schema_w_ri = schema=StructType([
372+
StructField(RECORD_INDEX_COLUMN_NAME, LongType()),
373+
StructField("col1", StringType()),
374+
StructField("col2", LongType())
375+
])
376+
377+
df4 = spark.createDataFrame([(1, None, None), (2, None, None), (3, None, None)],
378+
schema=_schema_w_ri)
379+
assert df_is_empty(df4)
380+
381+
df5 = df4.union(spark.createDataFrame([(4, None, 8)], schema=_schema_w_ri))
382+
assert not df_is_empty(df5)
383+
384+
369385

370386

0 commit comments

Comments
 (0)