| defmodule Plausible.Stats.IntervalTest do |
| use Plausible.DataCase, async: true |
|
|
| import Plausible.Stats.Interval |
| alias Plausible.Stats.{DateTimeRange, Query} |
|
|
| defp build_query(params) do |
| params = |
| %{metrics: [:visitors]} |
| |> Map.merge(params) |
| |> Map.to_list() |
|
|
| struct!(Query, params) |
| end |
|
|
| describe "default_for_query/1" do |
| test "by input_date_range" do |
| assert default_for_query(build_query(%{input_date_range: :realtime})) == "minute" |
| assert default_for_query(build_query(%{input_date_range: :day})) == "hour" |
| assert default_for_query(build_query(%{input_date_range: :"24h"})) == "hour" |
| assert default_for_query(build_query(%{input_date_range: {:last_n_days, 7}})) == "day" |
| assert default_for_query(build_query(%{input_date_range: {:last_n_months, 12}})) == "month" |
| end |
|
|
| test "by utc_time_range when period input_date_range is :all" do |
| year = DateTimeRange.new!(~D[2022-01-01], ~D[2023-01-01], "UTC") |
| fifteen_days = DateTimeRange.new!(~D[2022-01-01], ~D[2022-01-15], "UTC") |
| day = DateTimeRange.new!(~D[2022-01-01], ~D[2022-01-01], "UTC") |
|
|
| assert default_for_query(build_query(%{input_date_range: :all, utc_time_range: year})) == |
| "month" |
|
|
| assert default_for_query( |
| build_query(%{input_date_range: :all, utc_time_range: fifteen_days}) |
| ) == |
| "day" |
|
|
| assert default_for_query(build_query(%{input_date_range: :all, utc_time_range: day})) == |
| "hour" |
| end |
| end |
| end |
|
|