From 5a3e54750160ff971d0ab87c230f8f34a0b2a302 Mon Sep 17 00:00:00 2001 From: Icaro Ryan Souza Date: Sun, 14 Jul 2024 20:19:07 -0400 Subject: [PATCH 1/3] feature: add visible option to panels --- lib/avo/resources/items/item_group.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/avo/resources/items/item_group.rb b/lib/avo/resources/items/item_group.rb index 1fdf2ac18c..0a085e006d 100644 --- a/lib/avo/resources/items/item_group.rb +++ b/lib/avo/resources/items/item_group.rb @@ -5,6 +5,7 @@ class Avo::Resources::Items::ItemGroup include Avo::Concerns::HasItemType include Avo::Concerns::VisibleItems include Avo::Concerns::VisibleInDifferentViews + include Avo::Concerns::IsVisible attr_reader :name attr_reader :description @@ -17,6 +18,7 @@ def initialize(name: nil, description: nil, view: nil, **args) @description = description @items_holder = Avo::Resources::Items::Holder.new @args = args + @visible = args[:visible] post_initialize if respond_to?(:post_initialize) end From 74e3b8604c9801233c5db099519df440a21fb178 Mon Sep 17 00:00:00 2001 From: Icaro Ryan Souza Date: Wed, 17 Jul 2024 15:27:21 -0400 Subject: [PATCH 2/3] Add tests --- ...tabs_panels_and_sidebar_visibility_spec.rb | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/spec/features/avo/tabs_panels_and_sidebar_visibility_spec.rb b/spec/features/avo/tabs_panels_and_sidebar_visibility_spec.rb index 72025f3c2e..c38a43a6be 100644 --- a/spec/features/avo/tabs_panels_and_sidebar_visibility_spec.rb +++ b/spec/features/avo/tabs_panels_and_sidebar_visibility_spec.rb @@ -35,6 +35,10 @@ end end end + + panel "Hidden panel", visible: -> { resource.record.name == "RSpec PanelVisibility" } do + field :hidden_field_inside_panel, as: :text + end end end @@ -74,4 +78,26 @@ end end end + + describe "panels" do + context "when panel should be visible" do + let!(:visible_panel_fields_spouse) { create :spouse, name: "RSpec PanelVisibility" } + + it "displays the field inside the panel" do + visit "/admin/resources/spouses/#{visible_panel_fields_spouse.id}" + expect(page).to have_text "Hidden panel" + expect(page).to have_text "Hidden field inside panel" + end + end + + context "when panel should be hidden" do + let!(:not_visible_panel_fields_spouse) { create :spouse } + + it "does not display the field inside the panel" do + visit "/admin/resources/spouses/#{not_visible_panel_fields_spouse.id}" + expect(page).not_to have_text "Hidden panel" + expect(page).not_to have_text "Hidden field inside panel" + end + end + end end From 162c05890dfcffcced6c6503a1fcd0b389853204 Mon Sep 17 00:00:00 2001 From: Icaro Ryan Souza Date: Wed, 17 Jul 2024 15:58:35 -0400 Subject: [PATCH 3/3] refactor tests --- spec/features/avo/tabs_panels_and_sidebar_visibility_spec.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/features/avo/tabs_panels_and_sidebar_visibility_spec.rb b/spec/features/avo/tabs_panels_and_sidebar_visibility_spec.rb index c38a43a6be..56586350a1 100644 --- a/spec/features/avo/tabs_panels_and_sidebar_visibility_spec.rb +++ b/spec/features/avo/tabs_panels_and_sidebar_visibility_spec.rb @@ -82,6 +82,7 @@ describe "panels" do context "when panel should be visible" do let!(:visible_panel_fields_spouse) { create :spouse, name: "RSpec PanelVisibility" } + let(:url_with_visible_fields) { "/admin/resources/spouses/#{visible_panel_fields_spouse.id}" } it "displays the field inside the panel" do visit "/admin/resources/spouses/#{visible_panel_fields_spouse.id}" @@ -92,9 +93,10 @@ context "when panel should be hidden" do let!(:not_visible_panel_fields_spouse) { create :spouse } + let(:url_with_not_visible_fields) { "/admin/resources/spouses/#{not_visible_panel_fields_spouse.id}" } it "does not display the field inside the panel" do - visit "/admin/resources/spouses/#{not_visible_panel_fields_spouse.id}" + visit url_with_not_visible_fields expect(page).not_to have_text "Hidden panel" expect(page).not_to have_text "Hidden field inside panel" end