@@ -505,22 +505,70 @@ defmodule Plausible.Stats.QueryTest do
505505 assert is_nil ( meta [ :empty_metrics ] )
506506 end
507507
508- test "for regular metrics" , % { site: site } do
509- { :ok , query } =
510- QueryBuilder . build ( site , % ParsedQueryParams {
511- metrics: [ :visitors , :bounce_rate , :scroll_depth ] ,
512- input_date_range: :all ,
513- include: % QueryInclude { empty_metrics: true } ,
514- filters: [ [ :is , "event:page" , [ "/" ] ] ]
515- } )
508+ for { metric , expected } <- [
509+ { :visitors , 0 } ,
510+ { :visits , 0 } ,
511+ { :pageviews , 0 } ,
512+ { :views_per_visit , 0.0 } ,
513+ { :bounce_rate , 0.0 } ,
514+ { :visit_duration , nil }
515+ ] do
516+ test "default: empty #{ metric } is #{ expected } " , % { site: site } do
517+ { :ok , query } =
518+ QueryBuilder . build ( site , % ParsedQueryParams {
519+ metrics: [ unquote ( metric ) ] ,
520+ input_date_range: :all ,
521+ include: % QueryInclude { empty_metrics: true }
522+ } )
523+
524+ % Stats.QueryResult { meta: meta } = Stats . query ( site , query )
525+
526+ assert meta [ :empty_metrics ] == [ unquote ( expected ) ]
527+ end
528+ end
516529
517- % Stats.QueryResult { meta: meta } = Stats . query ( site , query )
530+ for { metric , expected } <- [
531+ { :time_on_page , nil } ,
532+ { :scroll_depth , nil }
533+ ] do
534+ test "page filter: empty #{ metric } is #{ expected } " , % { site: site } do
535+ { :ok , query } =
536+ QueryBuilder . build ( site , % ParsedQueryParams {
537+ metrics: [ unquote ( metric ) ] ,
538+ input_date_range: :all ,
539+ include: % QueryInclude { empty_metrics: true } ,
540+ filters: [ [ :is , "event:page" , [ "/" ] ] ]
541+ } )
542+
543+ % Stats.QueryResult { meta: meta } = Stats . query ( site , query )
544+
545+ assert meta [ :empty_metrics ] == [ unquote ( expected ) ]
546+ end
547+ end
518548
519- assert meta [ :empty_metrics ] == [ 0 , 0.0 , nil ]
549+ for { metric , expected } <- [
550+ { :events , 0 } ,
551+ { :group_conversion_rate , 0.0 }
552+ ] do
553+ test "goal filter: empty #{ metric } is #{ expected } " , % { site: site } do
554+ insert ( :goal , site: site , event_name: "Signup" )
555+
556+ { :ok , query } =
557+ QueryBuilder . build ( site , % ParsedQueryParams {
558+ metrics: [ unquote ( metric ) ] ,
559+ input_date_range: :all ,
560+ include: % QueryInclude { empty_metrics: true } ,
561+ filters: [ [ :is , "event:goal" , [ "Signup" ] ] ]
562+ } )
563+
564+ % Stats.QueryResult { meta: meta } = Stats . query ( site , query )
565+
566+ assert meta [ :empty_metrics ] == [ unquote ( expected ) ]
567+ end
520568 end
521569
522570 @ tag :ee_only
523- test "for revenue metrics" , % { site: site } do
571+ test "goal filter: empty revenue metrics" , % { site: site } do
524572 insert ( :goal , site: site , event_name: "Purchase" , currency: "EUR" )
525573
526574 { :ok , query } =
0 commit comments