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