defmodule Plausible.Google.API.Mock do @moduledoc """ Mock of API to Google services. """ @doc """ This function uses the event:page filter (which can be passed as a query parameter into StatsController) as a hack to mock different responses. """ def fetch_stats(_auth, query, _pagination, _search) do case page_filter_value(query) do ["/empty"] -> {:ok, []} ["/unsupported-filters"] -> {:error, :unsupported_filters} ["/not-configured"] -> {:error, :google_property_not_configured} ["/unexpected-error"] -> {:error, :some_unexpected_error} _ -> {:ok, [ %{ name: "simple web analytics", visitors: 25, impressions: 50, ctr: 37.0, position: 2.0 }, %{ name: "open-source analytics", visitors: 15, impressions: 25, ctr: 50.0, position: 4.0 } ]} end end defp page_filter_value(query) do Enum.find_value(query.filters, fn [:is, "event:page", value] -> value _ -> nil end) end end