Skip to content

Commit 37411cf

Browse files
committed
add missing tests and parsing include.empty_metrics
1 parent 938c9a4 commit 37411cf

3 files changed

Lines changed: 76 additions & 11 deletions

File tree

lib/plausible/stats/dashboard/query_parser.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ defmodule Plausible.Stats.Dashboard.QueryParser do
8484
time_labels: params["include"]["time_labels"] == true,
8585
partial_time_labels: params["include"]["partial_time_labels"] == true,
8686
present_index: params["include"]["present_index"] == true,
87+
empty_metrics: params["include"]["empty_metrics"] == true,
8788
trim_relative_date_range: true,
8889
drop_unavailable_time_on_page: true,
8990
drop_unavailable_revenue_metrics: true

test/plausible/stats/query/query_test.exs

Lines changed: 59 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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} =

test/plausible_web/controllers/api/stats_controller/main_graph_test.exs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,22 @@ defmodule PlausibleWeb.Api.StatsController.MainGraphTest do
501501
%{"dimensions" => ["2021-12-01"], "metrics" => [1]}
502502
]
503503
end
504+
505+
test "returns empty metrics under response.meta", %{conn: conn, site: site} do
506+
response =
507+
do_query(
508+
conn,
509+
site,
510+
%{
511+
"date_range" => "28d",
512+
"metrics" => ["visitors"],
513+
"dimensions" => ["time:day"],
514+
"include" => %{"empty_metrics" => true}
515+
}
516+
)
517+
518+
assert response["meta"]["empty_metrics"] == [0]
519+
end
504520
end
505521

506522
describe "default labels" do

0 commit comments

Comments
 (0)