diff --git a/app/helpers/alchemy/elements_helper.rb b/app/helpers/alchemy/elements_helper.rb index 4af9472953..f4700c62e6 100644 --- a/app/helpers/alchemy/elements_helper.rb +++ b/app/helpers/alchemy/elements_helper.rb @@ -77,7 +77,13 @@ def render_elements(options = {}) }.update(options) finder = options[:finder] || Alchemy::ElementsFinder.new(options) - page_version = @page_version || options[:from_page]&.public_version + + page_version = if @preview_mode + options[:from_page]&.draft_version + else + options[:from_page]&.public_version + end + elements = finder.elements(page_version: page_version) buff = [] diff --git a/spec/helpers/alchemy/elements_helper_spec.rb b/spec/helpers/alchemy/elements_helper_spec.rb index ae0fdefa0e..ab69e90a06 100644 --- a/spec/helpers/alchemy/elements_helper_spec.rb +++ b/spec/helpers/alchemy/elements_helper_spec.rb @@ -78,6 +78,18 @@ module Alchemy is_expected.to have_selector("##{element.name}_#{element.id}") is_expected.to have_selector("##{another_element.name}_#{another_element.id}") end + + context "in preview_mode" do + let!(:draft_element) { create(:alchemy_element, name: "headline", page_version: page.draft_version) } + + before do + assign(:preview_mode, true) + end + + it "page draft version is used" do + is_expected.to have_selector("##{draft_element.name}_#{draft_element.id}") + end + end end context "with from_page option" do @@ -95,6 +107,18 @@ module Alchemy is_expected.to have_selector("##{element.name}_#{element.id}") is_expected.to have_selector("##{another_element.name}_#{another_element.id}") end + + context "in preview_mode" do + let!(:draft_element) { create(:alchemy_element, name: "headline", page_version: another_page.draft_version) } + + before do + assign(:preview_mode, true) + end + + it "page draft version is used" do + is_expected.to have_selector("##{draft_element.name}_#{draft_element.id}") + end + end end context "if from_page is nil" do @@ -123,20 +147,6 @@ module Alchemy is_expected.to have_selector("#news_1001") end end - - context "with page_version assigned" do - let(:options) { {} } - let(:page_version) { create(:alchemy_page_version, :with_elements) } - - before do - assign(:page, page) - assign(:page_version, page_version) - end - - it "this page version is used" do - expect(subject).to have_selector(".article") - end - end end describe "#element_preview_code_attributes" do