@@ -496,6 +496,40 @@ defmodule Plausible.Stats.ComparisonsTest do
496496 assert comparison_query . utc_time_range . last == ~U[ 2023-03-14 18:30:00Z]
497497 end
498498
499+ test "custom time zone works with 24h comparison and a custom date range" do
500+ site = insert ( :site , timezone: "US/Eastern" )
501+
502+ query =
503+ QueryBuilder . build! ( site ,
504+ metrics: [ :visitors ] ,
505+ input_date_range: :"24h" ,
506+ include: [ compare: { :date_range , ~D[ 2023-02-15] , ~D[ 2023-02-18] } ] ,
507+ now: ~U[ 2023-03-15 18:30:00Z]
508+ )
509+
510+ comparison_query = Comparisons . get_comparison_query ( query )
511+
512+ assert comparison_query . utc_time_range . first == ~U[ 2023-02-15 05:00:00Z]
513+ assert comparison_query . utc_time_range . last == ~U[ 2023-02-19 04:59:59Z]
514+ end
515+
516+ test "custom time zone works with day/today comparison and a custom date range" do
517+ site = insert ( :site , timezone: "US/Eastern" )
518+
519+ query =
520+ QueryBuilder . build! ( site ,
521+ metrics: [ :visitors ] ,
522+ input_date_range: :day ,
523+ include: [ compare: { :date_range , ~D[ 2023-02-15] , ~D[ 2023-02-18] } ] ,
524+ now: ~U[ 2023-03-15 18:30:00Z]
525+ )
526+
527+ comparison_query = Comparisons . get_comparison_query ( query )
528+
529+ assert comparison_query . utc_time_range . first == ~U[ 2023-02-15 05:00:00Z]
530+ assert comparison_query . utc_time_range . last == ~U[ 2023-02-19 04:59:59Z]
531+ end
532+
499533 test "shifts back 24h period to match day of week when mode is previous_period with match_day_of_week" ,
500534 % { site: site } do
501535 query =
@@ -516,5 +550,39 @@ defmodule Plausible.Stats.ComparisonsTest do
516550 assert comparison_query . utc_time_range . first == ~U[ 2023-03-07 18:30:00Z]
517551 assert comparison_query . utc_time_range . last == ~U[ 2023-03-08 18:30:00Z]
518552 end
553+
554+ test "handles custom date range comparison against 24h period" , % { site: site } do
555+ query =
556+ QueryBuilder . build! ( site ,
557+ metrics: [ :visitors ] ,
558+ input_date_range: :"24h" ,
559+ include: [ compare: { :date_range , ~D[ 2023-02-15] , ~D[ 2023-02-18] } ] ,
560+
561+ # Wednesday
562+ now: ~U[ 2023-03-15 18:30:00Z]
563+ )
564+
565+ comparison_query = Comparisons . get_comparison_query ( query )
566+
567+ assert comparison_query . utc_time_range . first == ~U[ 2023-02-15 00:00:00Z]
568+ assert comparison_query . utc_time_range . last == ~U[ 2023-02-18 23:59:59Z]
569+ end
570+
571+ test "handles custom date range comparison day (today) period" , % { site: site } do
572+ query =
573+ QueryBuilder . build! ( site ,
574+ metrics: [ :visitors ] ,
575+ input_date_range: :day ,
576+ include: [ compare: { :date_range , ~D[ 2023-02-15] , ~D[ 2023-02-18] } ] ,
577+
578+ # Wednesday
579+ now: ~U[ 2023-03-15 18:30:00Z]
580+ )
581+
582+ comparison_query = Comparisons . get_comparison_query ( query )
583+
584+ assert comparison_query . utc_time_range . first == ~U[ 2023-02-15 00:00:00Z]
585+ assert comparison_query . utc_time_range . last == ~U[ 2023-02-18 23:59:59Z]
586+ end
519587 end
520588end
0 commit comments