defmodule Plausible.Stats.ParsedQueryParamsTest do use Plausible.DataCase alias Plausible.Stats.ParsedQueryParams describe "add_or_replace_filter" do test "adds filter" do initial_params = %ParsedQueryParams{filters: []} new_filter = [:is, "event:page", ["/"]] new_params = ParsedQueryParams.add_or_replace_filter(initial_params, new_filter) assert new_params.filters == [new_filter] end test "replaces same dimension filter" do initial_params = %ParsedQueryParams{ filters: [[:contains, "event:page", ["blog", "post"]], [:is, "visit:source", ["Google"]]] } new_filter = [:is, "event:page", ["/blog/some-post"]] new_params = ParsedQueryParams.add_or_replace_filter(initial_params, new_filter) assert new_params.filters == [ [:is, "visit:source", ["Google"]], new_filter ] end test "replaces custom prop dimension filter" do initial_params = %ParsedQueryParams{ filters: [[:contains, "event:props:path", ["/path"]], [:is, "visit:source", ["Google"]]] } new_filter = [:is, "event:props:url", ["https://example.com/path"]] new_params = ParsedQueryParams.add_or_replace_filter(initial_params, new_filter) assert new_params.filters == [ [:is, "visit:source", ["Google"]], new_filter ] end end end