mirror of
https://github.com/plausible/analytics.git
synced 2024-12-27 03:21:37 +03:00
60e418b357
This commit makes static search more strict by rejecting matches with a score less than 0.6. Here's an example of suggestion that was matching with a 0.5 score that should not be suggested. This makes the suggestion list smaller and more reasonable. Co-authored by: Robert Joonas <robertjoonas16@gmail.com>
128 lines
4.0 KiB
Elixir
128 lines
4.0 KiB
Elixir
defmodule PlausibleWeb.Live.FunnelSettings.FormTest do
|
|
use PlausibleWeb.ConnCase, async: true
|
|
import Phoenix.LiveViewTest
|
|
import Plausible.Test.Support.HTML
|
|
|
|
describe "integration - live rendering" do
|
|
setup [:create_user, :log_in, :create_site]
|
|
|
|
test "search reacts to the input, the user types in", %{conn: conn, site: site} do
|
|
setup_goals(site, ["Hello World", "Plausible", "Another World"])
|
|
lv = get_liveview(conn, site)
|
|
|
|
doc = type_into_combo(lv, 1, "hello")
|
|
|
|
assert text_of_element(doc, "#dropdown-step-1-option-0") == "Hello World"
|
|
|
|
doc = type_into_combo(lv, 1, "plausible")
|
|
|
|
assert text_of_element(doc, "#dropdown-step-1-option-0") == "Plausible"
|
|
end
|
|
|
|
test "selecting an option prefills input values", %{conn: conn, site: site} do
|
|
{:ok, [_, _, g3]} = setup_goals(site, ["Hello World", "Plausible", "Another World"])
|
|
lv = get_liveview(conn, site)
|
|
|
|
doc = type_into_combo(lv, 1, "another")
|
|
|
|
refute element_exists?(doc, ~s/input[type="hidden"][value="#{g3.id}"]/)
|
|
refute element_exists?(doc, ~s/input[type="text"][value="Another World"]/)
|
|
|
|
lv
|
|
|> element("li#dropdown-step-1-option-0 a")
|
|
|> render_click()
|
|
|
|
assert lv
|
|
|> element("#submit-step-1")
|
|
|> render()
|
|
|> element_exists?(~s/input[type="hidden"][value="#{g3.id}"]/)
|
|
|
|
assert lv
|
|
|> element("#step-1")
|
|
|> render()
|
|
|> element_exists?(~s/input[type="text"][value="Another World"]/)
|
|
end
|
|
|
|
test "selecting one option reduces suggestions in the other", %{conn: conn, site: site} do
|
|
setup_goals(site, ["Hello World", "Plausible", "Another World"])
|
|
lv = get_liveview(conn, site)
|
|
|
|
type_into_combo(lv, 1, "another")
|
|
|
|
lv
|
|
|> element("li#dropdown-step-1-option-0 a")
|
|
|> render_click()
|
|
|
|
doc = type_into_combo(lv, 2, "another")
|
|
|
|
refute text_of_element(doc, "ul#dropdown-step-1 li") =~ "Another World"
|
|
refute text_of_element(doc, "ul#dropdown-step-2 li") =~ "Another World"
|
|
end
|
|
|
|
test "suggestions are limited on change", %{conn: conn, site: site} do
|
|
setup_goals(site, for(i <- 1..20, do: "Goal #{i}"))
|
|
lv = get_liveview(conn, site)
|
|
|
|
doc =
|
|
lv
|
|
|> element("li#dropdown-step-1-option-0 a")
|
|
|> render_click()
|
|
|
|
assert element_exists?(doc, ~s/#li#dropdown-step-1-option-14/)
|
|
refute element_exists?(doc, ~s/#li#dropdown-step-1-option-15/)
|
|
end
|
|
|
|
test "removing one option alters suggestions for other", %{conn: conn, site: site} do
|
|
setup_goals(site, ["Hello World", "Plausible", "Another World"])
|
|
|
|
lv = get_liveview(conn, site)
|
|
|
|
lv |> element(~s/a[phx-click="add-step"]/) |> render_click()
|
|
|
|
type_into_combo(lv, 2, "hello")
|
|
|
|
lv
|
|
|> element("li#dropdown-step-2-option-0 a")
|
|
|> render_click()
|
|
|
|
doc = type_into_combo(lv, 1, "hello")
|
|
|
|
refute text_of_element(doc, "ul#dropdown-step-1 li") =~ "Hello World"
|
|
|
|
lv |> element(~s/#remove-step-2/) |> render_click()
|
|
|
|
doc = type_into_combo(lv, 1, "hello")
|
|
|
|
assert text_of_element(doc, "ul#dropdown-step-1 li") =~ "Hello World"
|
|
end
|
|
end
|
|
|
|
defp get_liveview(conn, site) do
|
|
conn = assign(conn, :live_module, PlausibleWeb.Live.FunnelSettings)
|
|
{:ok, lv, _html} = live(conn, "/#{site.domain}/settings/funnels")
|
|
lv |> element(~s/button[phx-click="add-funnel"]/) |> render_click()
|
|
assert form_view = find_live_child(lv, "funnels-form")
|
|
form_view |> element("form") |> render_change(%{funnel: %{name: "My test funnel"}})
|
|
form_view
|
|
end
|
|
|
|
defp setup_goals(site, goal_names) when is_list(goal_names) do
|
|
goals =
|
|
Enum.map(goal_names, fn goal_name ->
|
|
{:ok, g} = Plausible.Goals.create(site, %{"event_name" => goal_name})
|
|
g
|
|
end)
|
|
|
|
{:ok, goals}
|
|
end
|
|
|
|
defp type_into_combo(lv, idx, text) do
|
|
lv
|
|
|> element("input#step-#{idx}")
|
|
|> render_change(%{
|
|
"_target" => ["display-step-#{idx}"],
|
|
"display-step-#{idx}" => "#{text}"
|
|
})
|
|
end
|
|
end
|