File size: 1,544 Bytes
c9c49ab | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 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
|