diff --git a/lib/mv_web/live/member_live/show/membership_fees_component.ex b/lib/mv_web/live/member_live/show/membership_fees_component.ex
index 34495ae..0739b5e 100644
--- a/lib/mv_web/live/member_live/show/membership_fees_component.ex
+++ b/lib/mv_web/live/member_live/show/membership_fees_component.ex
@@ -53,7 +53,7 @@ defmodule MvWeb.MemberLive.Show.MembershipFeesComponent do
<%!-- Action Buttons (only when user has permission) --%>
<.button
- :if={@can_create_cycle}
+ :if={@member.membership_fee_type != nil and @can_create_cycle}
phx-click="regenerate_cycles"
phx-target={@myself}
class={["btn btn-sm btn-outline", if(@regenerating, do: "btn-disabled", else: "")]}
diff --git a/test/mv_web/member_live/show_membership_fees_test.exs b/test/mv_web/member_live/show_membership_fees_test.exs
index 1f447b8..57abfd1 100644
--- a/test/mv_web/member_live/show_membership_fees_test.exs
+++ b/test/mv_web/member_live/show_membership_fees_test.exs
@@ -117,13 +117,23 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do
assert html =~ "Yearly Type"
end
- test "shows no type message when no type assigned", %{conn: conn} do
+ test "shows no type message when no type assigned and Regenerate Cycles button is hidden", %{
+ conn: conn
+ } do
member = Mv.Fixtures.member_fixture(%{})
- {:ok, _view, html} = live(conn, "/members/#{member.id}")
+ {:ok, view, html} = live(conn, "/members/#{member.id}")
# Should show message about no type assigned
assert html =~ "No membership fee type assigned" || html =~ "No type"
+
+ # Switch to membership fees tab: message and no Regenerate Cycles button
+ view
+ |> element("button[phx-click='switch_tab'][phx-value-tab='membership_fees']")
+ |> render_click()
+
+ refute has_element?(view, "button[phx-click='regenerate_cycles']"),
+ "Regenerate Cycles should be hidden when no membership fee type is assigned"
end
end