defmodule Plausible.Stats.ApiQueryParserTest do use Plausible.DataCase import Plausible.Stats.ApiQueryParser alias Plausible.Stats.QueryError test "parsing empty map fails" do assert {:error, %QueryError{ code: :failed_schema_validation, message: "#: Required properties site_id, metrics, date_range were not present." }} = parse(%{}) end test "invalid metric passed" do params = %{ "site_id" => "example.com", "metrics" => ["visitors", "event:name"], "date_range" => "all" } assert {:error, %QueryError{ code: :failed_schema_validation, message: "#/metrics/1: Invalid metric \"event:name\"" }} = parse(params) end test "parses 24h date_range shorthand" do params = %{ "site_id" => "example.com", "metrics" => ["visitors"], "date_range" => "24h" } assert {:ok, parsed} = parse(params) assert parsed.input_date_range == :"24h" end end