mirror of
https://github.com/plausible/analytics.git
synced 2024-12-29 04:22:34 +03:00
134 lines
4.2 KiB
Elixir
134 lines
4.2 KiB
Elixir
|
defmodule PlausibleWeb.Api.StatsController.SuggestionsTest do
|
||
|
use PlausibleWeb.ConnCase
|
||
|
import Plausible.TestUtils
|
||
|
|
||
|
describe "GET /api/stats/:domain/suggestions/:filter_name" do
|
||
|
setup [:create_user, :log_in, :create_site]
|
||
|
|
||
|
test "returns suggestions for pages without a query", %{conn: conn, site: site} do
|
||
|
conn = get(conn, "/api/stats/#{site.domain}/suggestions/page?period=month&date=2019-01-01")
|
||
|
|
||
|
assert json_response(conn, 200) == ["/", "/register", "/contact", "/irrelevant"]
|
||
|
end
|
||
|
|
||
|
test "returns suggestions for pages with a query", %{conn: conn, site: site} do
|
||
|
conn =
|
||
|
get(conn, "/api/stats/#{site.domain}/suggestions/page?period=month&date=2019-01-01&q=re")
|
||
|
|
||
|
assert json_response(conn, 200) == ["/register", "/irrelevant"]
|
||
|
end
|
||
|
|
||
|
test "returns suggestions for pages without any suggestions", %{conn: conn, site: site} do
|
||
|
conn =
|
||
|
get(
|
||
|
conn,
|
||
|
"/api/stats/#{site.domain}/suggestions/page?period=month&date=2019-01-01&q=/123"
|
||
|
)
|
||
|
|
||
|
assert json_response(conn, 200) == []
|
||
|
end
|
||
|
|
||
|
test "returns suggestions for goals", %{conn: conn, site: site} do
|
||
|
conn = get(conn, "/api/stats/#{site.domain}/suggestions/goal?period=month&date=2019-01-01")
|
||
|
|
||
|
assert json_response(conn, 200) == []
|
||
|
end
|
||
|
|
||
|
test "returns suggestions for sources", %{conn: conn, site: site} do
|
||
|
conn =
|
||
|
get(conn, "/api/stats/#{site.domain}/suggestions/source?period=month&date=2019-01-01")
|
||
|
|
||
|
assert json_response(conn, 200) == ["10words", "Bing"]
|
||
|
end
|
||
|
|
||
|
test "returns suggestions for countries", %{conn: conn, site: site} do
|
||
|
conn =
|
||
|
get(
|
||
|
conn,
|
||
|
"/api/stats/#{site.domain}/suggestions/country?period=month&date=2019-01-01&q=GBR,UKR,URY,USA"
|
||
|
)
|
||
|
|
||
|
assert json_response(conn, 200) == ["USA"]
|
||
|
end
|
||
|
|
||
|
test "returns suggestions for countries without country in search", %{conn: conn, site: site} do
|
||
|
conn =
|
||
|
get(
|
||
|
conn,
|
||
|
"/api/stats/#{site.domain}/suggestions/country?period=month&date=2019-01-01&q=GBR,UKR,URY"
|
||
|
)
|
||
|
|
||
|
assert json_response(conn, 200) == []
|
||
|
end
|
||
|
|
||
|
test "returns suggestions for screen sizes", %{conn: conn, site: site} do
|
||
|
conn =
|
||
|
get(conn, "/api/stats/#{site.domain}/suggestions/screen?period=month&date=2019-01-01")
|
||
|
|
||
|
assert json_response(conn, 200) == ["Desktop"]
|
||
|
end
|
||
|
|
||
|
test "returns suggestions for browsers", %{conn: conn, site: site} do
|
||
|
conn =
|
||
|
get(conn, "/api/stats/#{site.domain}/suggestions/browser?period=month&date=2019-01-01")
|
||
|
|
||
|
assert json_response(conn, 200) == ["Chrome"]
|
||
|
end
|
||
|
|
||
|
test "returns suggestions for browser versions", %{conn: conn, site: site} do
|
||
|
filters = Jason.encode!(%{browser: "Chrome"})
|
||
|
|
||
|
conn =
|
||
|
get(
|
||
|
conn,
|
||
|
"/api/stats/#{site.domain}/suggestions/browser_version?period=month&date=2019-01-01&filters=#{
|
||
|
filters
|
||
|
}"
|
||
|
)
|
||
|
|
||
|
assert json_response(conn, 200) == ["78.0"]
|
||
|
end
|
||
|
|
||
|
test "returns suggestions for OS", %{conn: conn, site: site} do
|
||
|
conn = get(conn, "/api/stats/#{site.domain}/suggestions/os?period=month&date=2019-01-01")
|
||
|
|
||
|
assert json_response(conn, 200) == ["Mac"]
|
||
|
end
|
||
|
|
||
|
test "returns suggestions for OS versions", %{conn: conn, site: site} do
|
||
|
filters = Jason.encode!(%{os: "Mac"})
|
||
|
|
||
|
conn =
|
||
|
get(
|
||
|
conn,
|
||
|
"/api/stats/#{site.domain}/suggestions/os_version?period=month&date=2019-01-01&filters=#{
|
||
|
filters
|
||
|
}"
|
||
|
)
|
||
|
|
||
|
assert json_response(conn, 200) == ["10.15"]
|
||
|
end
|
||
|
|
||
|
test "returns suggestions for OS versions with search", %{conn: conn, site: site} do
|
||
|
filters = Jason.encode!(%{os: "Mac"})
|
||
|
|
||
|
conn =
|
||
|
get(
|
||
|
conn,
|
||
|
"/api/stats/#{site.domain}/suggestions/os_version?period=month&date=2019-01-01&filters=#{
|
||
|
filters
|
||
|
}&q=11"
|
||
|
)
|
||
|
|
||
|
assert json_response(conn, 200) == []
|
||
|
end
|
||
|
|
||
|
test "returns suggestions for referrers", %{conn: conn, site: site} do
|
||
|
conn =
|
||
|
get(conn, "/api/stats/#{site.domain}/suggestions/referrer?period=month&date=2019-01-01")
|
||
|
|
||
|
assert json_response(conn, 200) == ["10words.com/page1"]
|
||
|
end
|
||
|
end
|
||
|
end
|