Skip to content

Commit

Permalink
add unit tests for BaseRelation.render_event_time_filtered
Browse files Browse the repository at this point in the history
  • Loading branch information
MichelleArk committed Sep 5, 2024
1 parent 321adac commit ee51afc
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 2 deletions.
2 changes: 1 addition & 1 deletion dbt/adapters/base/relation.py
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,7 @@ def __hash__(self) -> int:
def __str__(self) -> str:
rendered = self.render() if self.limit is None else self.render_limited()

# Limited subquery is wrapped by the event time filter subquery, and not the other way around.
# Limited subquery is wrapped by the event time filter subquery, and not the other way around.
# This is because in the context of resolving limited refs, we care more about performance than reliably producing a sample of a certain size.
if self.event_time_filter:
rendered = self.render_event_time_filtered(rendered)
Expand Down
77 changes: 76 additions & 1 deletion tests/unit/test_relation.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
from dataclasses import dataclass, replace

from datetime import datetime
import pytest

from dbt.adapters.base import BaseRelation
from dbt.adapters.base.relation import EventTimeFilter
from dbt.adapters.contracts.relation import RelationType


Expand Down Expand Up @@ -81,6 +82,80 @@ def test_render_limited(limit, require_alias, expected_result):
assert str(my_relation) == expected_result


@pytest.mark.parametrize(
"event_time_filter,require_alias,expected_result",
[
(None, False, '"test_database"."test_schema"."test_identifier"'),
(
EventTimeFilter(field_name="column"),
False,
'"test_database"."test_schema"."test_identifier"',
),
(None, True, '"test_database"."test_schema"."test_identifier"'),
(
EventTimeFilter(field_name="column"),
True,
'"test_database"."test_schema"."test_identifier"',
),
(
EventTimeFilter(field_name="column", start=datetime(year=2020, month=1, day=1)),
False,
"""(select * from "test_database"."test_schema"."test_identifier" where column >= '2020-01-01 00:00:00')""",
),
(
EventTimeFilter(field_name="column", start=datetime(year=2020, month=1, day=1)),
True,
"""(select * from "test_database"."test_schema"."test_identifier" where column >= '2020-01-01 00:00:00') _dbt_et_filter_subq_test_identifier""",
),
(
EventTimeFilter(field_name="column", end=datetime(year=2020, month=1, day=1)),
False,
"""(select * from "test_database"."test_schema"."test_identifier" where column < '2020-01-01 00:00:00')""",
),
(
EventTimeFilter(
field_name="column",
start=datetime(year=2020, month=1, day=1),
end=datetime(year=2020, month=1, day=2),
),
False,
"""(select * from "test_database"."test_schema"."test_identifier" where column >= '2020-01-01 00:00:00' and column < '2020-01-02 00:00:00')""",
),
],
)
def test_render_event_time_filtered(event_time_filter, require_alias, expected_result):
my_relation = BaseRelation.create(
database="test_database",
schema="test_schema",
identifier="test_identifier",
event_time_filter=event_time_filter,
require_alias=require_alias,
)
actual_result = my_relation.render_event_time_filtered()
assert actual_result == expected_result
assert str(my_relation) == expected_result


def test_render_event_time_filtered_and_limited():
my_relation = BaseRelation.create(
database="test_database",
schema="test_schema",
identifier="test_identifier",
event_time_filter=EventTimeFilter(
field_name="column",
start=datetime(year=2020, month=1, day=1),
end=datetime(year=2020, month=1, day=2),
),
limit=0,
require_alias=False,
)
expected_result = """(select * from (select * from "test_database"."test_schema"."test_identifier" where false limit 0) where column >= '2020-01-01 00:00:00' and column < '2020-01-02 00:00:00')"""

actual_result = my_relation.render_event_time_filtered(my_relation.render_limited())
assert actual_result == expected_result
assert str(my_relation) == expected_result


def test_create_ephemeral_from_uses_identifier():
@dataclass
class Node:
Expand Down

0 comments on commit ee51afc

Please sign in to comment.