analytics/test/plausible/google/ga4/api_test.exs

58 lines
1.9 KiB
Elixir

defmodule Plausible.Google.GA4.APITest do
use Plausible.DataCase, async: true
import Mox
alias Plausible.Google.GA4
setup :verify_on_exit!
describe "list_properties/1" do
test "returns list of properties grouped by accounts" do
result = Jason.decode!(File.read!("fixture/ga4_list_properties.json"))
expect(Plausible.HTTPClient.Mock, :get, fn _url, _opts ->
{:ok, %Finch.Response{status: 200, body: result}}
end)
assert {:ok, accounts} = GA4.API.list_properties("some_access_token")
assert [
{"account.one (accounts/28425178)",
[{"account.one - GA4 (properties/428685906)", "properties/428685906"}]},
{"Demo Account (accounts/54516992)",
[
{"GA4 - Flood-It! (properties/153293282)", "properties/153293282"},
{"GA4 - Google Merch Shop (properties/213025502)", "properties/213025502"}
]}
] = accounts
end
end
describe "get_property/2" do
test "returns tuple consisting of display name and value of a property" do
result = Jason.decode!(File.read!("fixture/ga4_list_properties.json"))
expect(Plausible.HTTPClient.Mock, :get, fn _url, _opts ->
{:ok, %Finch.Response{status: 200, body: result}}
end)
assert {:ok, {"GA4 - Flood-It! (properties/153293282)", "properties/153293282"}} =
GA4.API.get_property("some_access_token", "properties/153293282")
end
end
describe "get_analytics_start_date/2" do
test "returns stats start date for a given property" do
result = Jason.decode!(File.read!("fixture/ga4_start_date.json"))
expect(Plausible.HTTPClient.Mock, :post, fn _url, _headers, _body ->
{:ok, %Finch.Response{status: 200, body: result}}
end)
assert {:ok, ~D[2024-02-22]} =
GA4.API.get_analytics_start_date("some_access_token", "properties/153293282")
end
end
end