From dff0a33e967bc27a0bb288dcd89e9d5a918268d0 Mon Sep 17 00:00:00 2001 From: Jamil Date: Wed, 8 May 2024 12:04:51 -0700 Subject: [PATCH] fix(portal): Ensure site can be changed when multi-site is false (#4915) Fixes #4913 --- .../web/lib/web/live/resources/components.ex | 2 +- .../web/test/web/live/resources/edit_test.exs | 50 +++++++++++++++++++ .../web/test/web/live/resources/new_test.exs | 48 ++++++++++++++++++ 3 files changed, 99 insertions(+), 1 deletion(-) diff --git a/elixir/apps/web/lib/web/live/resources/components.ex b/elixir/apps/web/lib/web/live/resources/components.ex index 93a6d8b90d..d3a47118ea 100644 --- a/elixir/apps/web/lib/web/live/resources/components.ex +++ b/elixir/apps/web/lib/web/live/resources/components.ex @@ -292,7 +292,7 @@ defmodule Web.Resources.Components do %Domain.Resources.Connection{} = connection -> [connection.gateway_group_id] - {id, _attrs} -> + {_, %{"gateway_group_id" => id}} -> [id] end) end diff --git a/elixir/apps/web/test/web/live/resources/edit_test.exs b/elixir/apps/web/test/web/live/resources/edit_test.exs index fe64350fbc..a1d324b515 100644 --- a/elixir/apps/web/test/web/live/resources/edit_test.exs +++ b/elixir/apps/web/test/web/live/resources/edit_test.exs @@ -331,6 +331,56 @@ defmodule Web.Live.Resources.EditTest do assert saved_resource.filters == [] end + test "maintains selection of site when multi-site is false", %{ + account: account, + group: _group, + resource: resource, + identity: identity, + conn: conn + } do + Domain.Config.feature_flag_override(:multi_site_resources, false) + group2 = Fixtures.Gateways.create_group(account: account) + + {:ok, lv, _html} = + conn + |> authorize_conn(identity) + |> live(~p"/#{account}/resources/#{resource}/edit") + + lv + |> form("form") + |> render_change(%{"resource[connections][0][gateway_group_id]" => group2.id}) + + assert has_element?( + lv, + "select[name='resource[connections][0][gateway_group_id]'] option[value='#{group2.id}'][selected]" + ) + end + + test "maintains selection of sites when multi-site is true", %{ + account: account, + group: group, + resource: resource, + identity: identity, + conn: conn + } do + group2 = Fixtures.Gateways.create_group(account: account) + + {:ok, lv, _html} = + conn + |> authorize_conn(identity) + |> live(~p"/#{account}/resources/#{resource}/edit") + + lv + |> form("form") + |> render_change(%{ + "resource[connections][#{group.id}][enabled]" => false, + "resource[connections][#{group2.id}][enabled]" => true + }) + + refute has_element?(lv, "input[name='resource[connections][#{group.id}][enabled]'][checked]") + assert has_element?(lv, "input[name='resource[connections][#{group2.id}][enabled]'][checked]") + end + test "disables traffic filters form fields when traffic filters disabled", %{ account: account, group: group, diff --git a/elixir/apps/web/test/web/live/resources/new_test.exs b/elixir/apps/web/test/web/live/resources/new_test.exs index 366ede2358..40fede94d5 100644 --- a/elixir/apps/web/test/web/live/resources/new_test.exs +++ b/elixir/apps/web/test/web/live/resources/new_test.exs @@ -544,4 +544,52 @@ defmodule Web.Live.Resources.NewTest do assert Repo.all(Domain.Resources.Resource) == [] end + + test "maintains selection of site when multi-site is false", %{ + account: account, + group: _group, + identity: identity, + conn: conn + } do + Domain.Config.feature_flag_override(:multi_site_resources, false) + group2 = Fixtures.Gateways.create_group(account: account) + + {:ok, lv, _html} = + conn + |> authorize_conn(identity) + |> live(~p"/#{account}/resources/new") + + lv + |> form("form") + |> render_change(%{"resource[connections][0][gateway_group_id]" => group2.id}) + + assert has_element?( + lv, + "select[name='resource[connections][0][gateway_group_id]'] option[value='#{group2.id}'][selected]" + ) + end + + test "maintains selection of sites when multi-site is true", %{ + account: account, + group: group, + identity: identity, + conn: conn + } do + group2 = Fixtures.Gateways.create_group(account: account) + + {:ok, lv, _html} = + conn + |> authorize_conn(identity) + |> live(~p"/#{account}/resources/new") + + lv + |> form("form") + |> render_change(%{ + "resource[connections][#{group.id}][enabled]" => false, + "resource[connections][#{group2.id}][enabled]" => true + }) + + refute has_element?(lv, "input[name='resource[connections][#{group.id}][enabled]'][checked]") + assert has_element?(lv, "input[name='resource[connections][#{group2.id}][enabled]'][checked]") + end end