@@ -317,4 +317,55 @@ defmodule Plausible.Stats.QueryTest do
317317 ]
318318 end
319319 end
320+
321+ describe "group_conversion_rate with time:minute and time:hour dimensions" do
322+ test "unique conversions are not smeared when querying visitors without conversion_rate" ,
323+ % { site: site } do
324+ insert ( :goal , site: site , event_name: "Signup" )
325+
326+ populate_stats ( site , [
327+ build ( :pageview , user_id: 1 , timestamp: ~N[ 2021-01-01 00:00:00] ) ,
328+ build ( :event , name: "Signup" , user_id: 1 , timestamp: ~N[ 2021-01-01 00:05:00] ) ,
329+ build ( :pageview , user_id: 2 , timestamp: ~N[ 2021-01-01 00:00:00] )
330+ ] )
331+
332+ { :ok , query } =
333+ QueryBuilder . build ( site , % ParsedQueryParams {
334+ metrics: [ :visitors ] ,
335+ input_date_range: { :datetime_range , ~U[ 2021-01-01 00:00:00Z] , ~U[ 2021-01-01 00:10:00Z] } ,
336+ dimensions: [ "time:minute" ] ,
337+ filters: [ [ :is , "event:goal" , [ "Signup" ] ] ] ,
338+ skip_goal_existence_check: true
339+ } )
340+
341+ % Stats.QueryResult { results: results } = Stats . query ( site , query )
342+
343+ assert [ % { dimensions: [ "2021-01-01 00:05:00" ] , metrics: [ 1 ] } ] = results
344+ end
345+
346+ test "unique conversions are not smeared across all session minutes via timeSlots" ,
347+ % { site: site } do
348+ insert ( :goal , site: site , event_name: "Signup" )
349+
350+ populate_stats ( site , [
351+ build ( :pageview , user_id: 1 , timestamp: ~N[ 2021-01-01 00:00:00] ) ,
352+ build ( :event , name: "Signup" , user_id: 1 , timestamp: ~N[ 2021-01-01 00:05:00] ) ,
353+ build ( :pageview , user_id: 2 , timestamp: ~N[ 2021-01-01 00:00:00] ) ,
354+ build ( :pageview , user_id: 3 , timestamp: ~N[ 2021-01-01 00:05:00] )
355+ ] )
356+
357+ { :ok , query } =
358+ QueryBuilder . build ( site , % ParsedQueryParams {
359+ metrics: [ :visitors , :group_conversion_rate ] ,
360+ input_date_range: { :datetime_range , ~U[ 2021-01-01 00:00:00Z] , ~U[ 2021-01-01 00:10:00Z] } ,
361+ dimensions: [ "time:minute" ] ,
362+ filters: [ [ :is , "event:goal" , [ "Signup" ] ] ] ,
363+ skip_goal_existence_check: true
364+ } )
365+
366+ % Stats.QueryResult { results: results } = Stats . query ( site , query )
367+
368+ assert [ % { dimensions: [ "2021-01-01 00:05:00" ] , metrics: [ 1 , 50.0 ] } ] = results
369+ end
370+ end
320371end
0 commit comments