mirror of
https://github.com/BillyOutlast/posthog.git
synced 2026-02-04 03:01:23 +01:00
chore: clearify some tests to help my brain (#41480)
clarify some tests with the holy fire of parameterization
This commit is contained in:
@@ -3,6 +3,8 @@ from datetime import UTC, datetime
|
||||
from freezegun import freeze_time
|
||||
from posthog.test.base import APIBaseTest
|
||||
|
||||
from parameterized import parameterized
|
||||
|
||||
from posthog.schema import DateRange
|
||||
|
||||
from posthog.session_recordings.queries.sub_queries.base_query import SessionRecordingsQueryDateRange
|
||||
@@ -10,69 +12,59 @@ from posthog.session_recordings.queries.sub_queries.base_query import SessionRec
|
||||
|
||||
@freeze_time("2021-01-01T13:46:23")
|
||||
class TestSessionRecordingsQueryDateRange(APIBaseTest):
|
||||
def test_with_relative_dates(self) -> None:
|
||||
@parameterized.expand(
|
||||
[
|
||||
(
|
||||
"relative_dates",
|
||||
"-3d",
|
||||
"-24h",
|
||||
datetime(2020, 12, 29, 0, 0, 0, 0, UTC),
|
||||
datetime(2020, 12, 31, 13, 46, 23, tzinfo=UTC),
|
||||
),
|
||||
(
|
||||
"date_only_strings_get_start_and_end_of_day",
|
||||
"2020-12-29",
|
||||
"2021-01-01",
|
||||
datetime(2020, 12, 29, 0, 0, 0, 0, UTC),
|
||||
datetime(2021, 1, 1, 23, 59, 59, 999999, UTC),
|
||||
),
|
||||
(
|
||||
"datetime_strings_preserve_exact_time",
|
||||
"2020-12-29T12:23:45Z",
|
||||
"2021-01-01T13:34:42Z",
|
||||
datetime(2020, 12, 29, 12, 23, 45, tzinfo=UTC),
|
||||
datetime(2021, 1, 1, 13, 34, 42, tzinfo=UTC),
|
||||
),
|
||||
(
|
||||
"missing_date_from_defaults_to_7_days_ago",
|
||||
None,
|
||||
"2021-01-01T13:34:42Z",
|
||||
datetime(2020, 12, 25, 0, 0, 0, 0, UTC),
|
||||
datetime(2021, 1, 1, 13, 34, 42, tzinfo=UTC),
|
||||
),
|
||||
(
|
||||
"missing_date_to_defaults_to_now",
|
||||
"2021-01-01T11:34:42Z",
|
||||
None,
|
||||
datetime(2021, 1, 1, 11, 34, 42, tzinfo=UTC),
|
||||
datetime(2021, 1, 1, 13, 46, 23, tzinfo=UTC),
|
||||
),
|
||||
]
|
||||
)
|
||||
def test_date_range_parsing(
|
||||
self,
|
||||
_name: str,
|
||||
input_date_from: str | None,
|
||||
input_date_to: str | None,
|
||||
expected_date_from: datetime,
|
||||
expected_date_to: datetime,
|
||||
) -> None:
|
||||
query_date_range = SessionRecordingsQueryDateRange(
|
||||
date_range=DateRange(date_from="-3d", date_to="-24h", explicitDate=True),
|
||||
date_range=DateRange(date_from=input_date_from, date_to=input_date_to, explicitDate=True),
|
||||
team=self.team,
|
||||
interval=None,
|
||||
now=datetime.now(UTC),
|
||||
)
|
||||
|
||||
assert query_date_range.date_from() == datetime(2020, 12, 29, 0, 0, 0, 0, UTC)
|
||||
assert query_date_range.date_to() == datetime(
|
||||
year=2020, month=12, day=31, hour=13, minute=46, second=23, tzinfo=UTC
|
||||
)
|
||||
|
||||
def test_with_string_dates(self) -> None:
|
||||
query_date_range = SessionRecordingsQueryDateRange(
|
||||
date_range=DateRange(date_from="2020-12-29", date_to="2021-01-01", explicitDate=True),
|
||||
team=self.team,
|
||||
interval=None,
|
||||
now=datetime.now(UTC),
|
||||
)
|
||||
|
||||
assert query_date_range.date_from() == datetime(2020, 12, 29, 0, 0, 0, 0, UTC)
|
||||
assert query_date_range.date_to() == datetime(
|
||||
year=2021, month=1, day=1, hour=23, minute=59, second=59, microsecond=999999, tzinfo=UTC
|
||||
)
|
||||
|
||||
def test_with_string_date_times(self) -> None:
|
||||
query_date_range = SessionRecordingsQueryDateRange(
|
||||
date_range=DateRange(date_from="2020-12-29T12:23:45Z", date_to="2021-01-01T13:34:42Z", explicitDate=True),
|
||||
team=self.team,
|
||||
interval=None,
|
||||
now=datetime.now(UTC),
|
||||
)
|
||||
|
||||
assert query_date_range.date_from() == datetime(2020, 12, 29, 12, 23, 45, tzinfo=UTC)
|
||||
assert query_date_range.date_to() == datetime(
|
||||
year=2021, month=1, day=1, hour=13, minute=34, second=42, tzinfo=UTC
|
||||
)
|
||||
|
||||
def test_with_no_date_from(self) -> None:
|
||||
query_date_range = SessionRecordingsQueryDateRange(
|
||||
date_range=DateRange(date_from=None, date_to="2021-01-01T13:34:42Z", explicitDate=True),
|
||||
team=self.team,
|
||||
interval=None,
|
||||
now=datetime.now(UTC),
|
||||
)
|
||||
|
||||
# defaults to start of 7 days ago
|
||||
assert query_date_range.date_from() == datetime(2020, 12, 25, 0, 0, 0, 0, UTC)
|
||||
assert query_date_range.date_to() == datetime(
|
||||
year=2021, month=1, day=1, hour=13, minute=34, second=42, tzinfo=UTC
|
||||
)
|
||||
|
||||
def test_with_no_date_to(self) -> None:
|
||||
query_date_range = SessionRecordingsQueryDateRange(
|
||||
date_range=DateRange(date_from="2021-01-01T11:34:42Z", date_to=None, explicitDate=True),
|
||||
team=self.team,
|
||||
interval=None,
|
||||
now=datetime.now(UTC),
|
||||
)
|
||||
|
||||
assert query_date_range.date_from() == datetime(2021, 1, 1, 11, 34, 42, tzinfo=UTC)
|
||||
# defaults to now
|
||||
assert query_date_range.date_to() == datetime(
|
||||
year=2021, month=1, day=1, hour=13, minute=46, second=23, tzinfo=UTC
|
||||
)
|
||||
assert query_date_range.date_from() == expected_date_from
|
||||
assert query_date_range.date_to() == expected_date_to
|
||||
|
||||
Reference in New Issue
Block a user