@@ -4473,6 +4473,40 @@ defmodule PlausibleWeb.Api.ExternalStatsController.QueryTest do
44734473 end
44744474
44754475 describe "behavioral (has_done/has_not_done) filters" do
4476+ test "has_done does counting by sessions" , % { conn: conn , site: site } do
4477+ populate_stats ( site , [
4478+ # Session 1
4479+ build ( :event , name: "Conversion" , user_id: 1 , timestamp: ~N[ 2021-01-01 00:00:00] ) ,
4480+ build ( :event , name: "pageview" , user_id: 1 , timestamp: ~N[ 2021-01-01 00:01:00] ) ,
4481+ # Session 2
4482+ build ( :event , name: "pageview" , user_id: 1 , timestamp: ~N[ 2021-01-02 00:00:00] ) ,
4483+ build ( :event , name: "pageview" , user_id: 1 , timestamp: ~N[ 2021-01-02 00:01:00] ) ,
4484+ # Session 3
4485+ build ( :event , name: "Conversion" , user_id: 1 , timestamp: ~N[ 2021-01-03 00:00:00] ) ,
4486+ build ( :event , name: "pageview" , user_id: 1 , timestamp: ~N[ 2021-01-03 00:01:00] ) ,
4487+ build ( :event , name: "pageview" , user_id: 1 , timestamp: ~N[ 2021-01-03 00:02:00] ) ,
4488+ build ( :event , name: "pageview" , user_id: 1 , timestamp: ~N[ 2021-01-03 00:03:00] ) ,
4489+ # Session 4
4490+ build ( :event , name: "Conversion" , user_id: 2 , timestamp: ~N[ 2021-01-01 00:00:00] ) ,
4491+ build ( :event , name: "pageview" , user_id: 2 , timestamp: ~N[ 2021-01-01 00:01:00] ) ,
4492+ build ( :event , name: "pageview" , user_id: 2 , timestamp: ~N[ 2021-01-01 00:02:00] ) ,
4493+ build ( :event , name: "pageview" , user_id: 2 , timestamp: ~N[ 2021-01-01 00:03:00] ) ,
4494+ build ( :event , name: "pageview" , user_id: 2 , timestamp: ~N[ 2021-01-01 00:04:00] )
4495+ ] )
4496+
4497+ conn =
4498+ post ( conn , "/api/v2/query-internal-test" , % {
4499+ "site_id" => site . domain ,
4500+ "metrics" => [ "visitors" , "visits" , "events" , "pageviews" ] ,
4501+ "date_range" => "all" ,
4502+ "filters" => [ [ "has_done" , [ "is" , "event:name" , [ "Conversion" ] ] ] ]
4503+ } )
4504+
4505+ assert json_response ( conn , 200 ) [ "results" ] == [
4506+ % { "dimensions" => [ ] , "metrics" => [ 2 , 3 , 11 , 8 ] }
4507+ ]
4508+ end
4509+
44764510 test "has_done returns all events by users who match condition if no further filters are provided" ,
44774511 % { conn: conn , site: site } do
44784512 populate_stats ( site , [
@@ -4584,10 +4618,10 @@ defmodule PlausibleWeb.Api.ExternalStatsController.QueryTest do
45844618 test "has_done with complex event:props and event:name filters" , % { conn: conn , site: site } do
45854619 populate_stats ( site , [
45864620 build ( :event , name: "Purchase" , user_id: 1 , timestamp: ~N[ 2021-01-01 00:00:00] ) ,
4587- build ( :event , name: "Purchase" , user_id: 1 , timestamp: ~N[ 2021-01-02 00:00 :00] ) ,
4588- build ( :event , name: "Purchase" , user_id: 1 , timestamp: ~N[ 2021-01-03 00:00 :00] ) ,
4621+ build ( :event , name: "Purchase" , user_id: 1 , timestamp: ~N[ 2021-01-01 00:10 :00] ) ,
4622+ build ( :event , name: "Purchase" , user_id: 1 , timestamp: ~N[ 2021-01-01 00:20 :00] ) ,
45894623 build ( :event , name: "pageview" , user_id: 2 , timestamp: ~N[ 2021-01-01 00:00:00] ) ,
4590- build ( :event , name: "Purchase" , user_id: 2 , timestamp: ~N[ 2021-01-03 00:00 :00] ) ,
4624+ build ( :event , name: "Purchase" , user_id: 2 , timestamp: ~N[ 2021-01-01 00:10 :00] ) ,
45914625 build ( :event ,
45924626 name: "Signup" ,
45934627 user_id: 3 ,
0 commit comments