@@ -405,6 +405,15 @@ defmodule PlausibleWeb.Live.GoalSettings.FormTest do
405405
406406 lv = get_liveview ( conn , site ) |> open_modal_with_goal_type ( "custom_events" )
407407
408+ # If autoconfigure modal shows, click "Add manually" to get to the regular form
409+ html = render ( lv )
410+
411+ if html =~ "We detected" do
412+ lv
413+ |> element ( "button[phx-click='add-manually']" )
414+ |> render_click ( )
415+ end
416+
408417 type_into_combo ( lv , "event_name_input_modalseq0" , "One" )
409418 html = render ( lv )
410419
@@ -436,6 +445,99 @@ defmodule PlausibleWeb.Live.GoalSettings.FormTest do
436445 end
437446 end
438447
448+ describe "Autoconfigure modal" do
449+ setup [ :create_user , :log_in , :create_site ]
450+
451+ test "shows autoconfigure modal when opening custom events modal with available events" , % {
452+ conn: conn ,
453+ site: site
454+ } do
455+ populate_stats ( site , [
456+ build ( :event , name: "Signup" ) ,
457+ build ( :event , name: "Newsletter Signup" ) ,
458+ build ( :event , name: "Purchase" )
459+ ] )
460+
461+ lv = get_liveview ( conn , site ) |> open_modal_with_goal_type ( "custom_events" )
462+
463+ html = render ( lv )
464+ assert html =~ "We detected 3 custom"
465+ assert html =~ "These events have been sent from your site in the past 6 months"
466+ end
467+
468+ test "clicking 'Add manually' shows the regular form" , % { conn: conn , site: site } do
469+ populate_stats ( site , [
470+ build ( :event , name: "Signup" ) ,
471+ build ( :event , name: "Newsletter Signup" ) ,
472+ build ( :event , name: "Purchase" )
473+ ] )
474+
475+ lv = get_liveview ( conn , site ) |> open_modal_with_goal_type ( "custom_events" )
476+
477+ html = render ( lv )
478+ assert html =~ "We detected 3 custom"
479+
480+ lv
481+ |> element ( "button[phx-click='add-manually']" )
482+ |> render_click ( )
483+
484+ html = render ( lv )
485+ refute html =~ "We detected"
486+ assert html =~ "Add goal for"
487+ end
488+
489+ test "autoconfigure button adds all events" , % { conn: conn , site: site } do
490+ populate_stats ( site , [
491+ build ( :event , name: "Signup" ) ,
492+ build ( :event , name: "Newsletter Signup" ) ,
493+ build ( :event , name: "Purchase" )
494+ ] )
495+
496+ lv = get_liveview ( conn , site ) |> open_modal_with_goal_type ( "custom_events" )
497+
498+ lv
499+ |> element ( "button[phx-click='autoconfigure']" )
500+ |> render_click ( )
501+
502+ # Render again to process the async :autoconfigure message
503+ _html = render ( lv )
504+
505+ goals = Plausible.Goals . for_site ( site )
506+ assert length ( goals ) == 3
507+ assert Enum . any? ( goals , & ( & 1 . event_name == "Signup" ) )
508+ assert Enum . any? ( goals , & ( & 1 . event_name == "Newsletter Signup" ) )
509+ assert Enum . any? ( goals , & ( & 1 . event_name == "Purchase" ) )
510+ end
511+
512+ test "autoconfigure modal does not show when all events are already goals" , % {
513+ conn: conn ,
514+ site: site
515+ } do
516+ populate_stats ( site , [
517+ build ( :event , name: "Signup" ) ,
518+ build ( :event , name: "Newsletter Signup" ) ,
519+ build ( :event , name: "Purchase" )
520+ ] )
521+
522+ lv = get_liveview ( conn , site )
523+
524+ lv = open_modal_with_goal_type ( lv , "custom_events" )
525+
526+ lv
527+ |> element ( "button[phx-click='autoconfigure']" )
528+ |> render_click ( )
529+
530+ # Render again to process the async :autoconfigure message and modal close event
531+ _html = render ( lv )
532+
533+ lv = open_modal_with_goal_type ( lv , "custom_events" )
534+
535+ html = render ( lv )
536+ refute html =~ "We detected"
537+ refute html =~ "from the last 6 months"
538+ end
539+ end
540+
439541 defp type_into_combo ( lv , id , text ) do
440542 lv
441543 |> element ( "input##{ id } " )
0 commit comments