diff --git a/entry_types/paged/app/controllers/pageflow_paged/application_controller.rb b/entry_types/paged/app/controllers/pageflow_paged/application_controller.rb index e2414cf49c..6fb627492c 100644 --- a/entry_types/paged/app/controllers/pageflow_paged/application_controller.rb +++ b/entry_types/paged/app/controllers/pageflow_paged/application_controller.rb @@ -11,10 +11,10 @@ class ApplicationController < ActionController::Base helper Pageflow::InfoBoxHelper helper Pageflow::NavigationBarHelper helper Pageflow::OverviewHelper - helper Pageflow::PageBackgroundAssetHelper + helper PageBackgroundAssetHelper helper Pageflow::PagesHelper helper Pageflow::PageTypesHelper - helper Pageflow::ReactServerSideRenderingHelper + helper ReactServerSideRenderingHelper helper Pageflow::RevisionFileHelper helper Pageflow::SocialShareHelper helper Pageflow::SocialShareLinksHelper diff --git a/app/helpers/pageflow/page_background_asset_helper.rb b/entry_types/paged/app/helpers/pageflow_paged/page_background_asset_helper.rb similarity index 51% rename from app/helpers/pageflow/page_background_asset_helper.rb rename to entry_types/paged/app/helpers/pageflow_paged/page_background_asset_helper.rb index 8fe23f14f7..bc9a06d632 100644 --- a/app/helpers/pageflow/page_background_asset_helper.rb +++ b/entry_types/paged/app/helpers/pageflow_paged/page_background_asset_helper.rb @@ -1,10 +1,11 @@ -module Pageflow +module PageflowPaged + # Render image or video loop page backgrounds module PageBackgroundAssetHelper - include EntryJsonSeedHelper + include Pageflow::EntryJsonSeedHelper include ReactServerSideRenderingHelper def page_background_asset(page) - render('pageflow/page_background_asset/element', + render('pageflow_paged/page_background_asset/element', entry: @entry, page: page) end diff --git a/app/helpers/pageflow/react_server_side_rendering_helper.rb b/entry_types/paged/app/helpers/pageflow_paged/react_server_side_rendering_helper.rb similarity index 97% rename from app/helpers/pageflow/react_server_side_rendering_helper.rb rename to entry_types/paged/app/helpers/pageflow_paged/react_server_side_rendering_helper.rb index 3c7c5b95a0..ca9dc186ea 100644 --- a/app/helpers/pageflow/react_server_side_rendering_helper.rb +++ b/entry_types/paged/app/helpers/pageflow_paged/react_server_side_rendering_helper.rb @@ -1,4 +1,4 @@ -module Pageflow +module PageflowPaged # @api private module ReactServerSideRenderingHelper def render_page_react_component(entry, page, component_name) diff --git a/app/views/pageflow/page_background_asset/_element.html.erb b/entry_types/paged/app/views/pageflow_paged/page_background_asset/_element.html.erb similarity index 100% rename from app/views/pageflow/page_background_asset/_element.html.erb rename to entry_types/paged/app/views/pageflow_paged/page_background_asset/_element.html.erb diff --git a/app/views/pageflow/react/_widget.html.erb b/entry_types/paged/app/views/pageflow_paged/react/_widget.html.erb similarity index 100% rename from app/views/pageflow/react/_widget.html.erb rename to entry_types/paged/app/views/pageflow_paged/react/_widget.html.erb diff --git a/app/views/pageflow/react/page.html.erb b/entry_types/paged/app/views/pageflow_paged/react/page.html.erb similarity index 100% rename from app/views/pageflow/react/page.html.erb rename to entry_types/paged/app/views/pageflow_paged/react/page.html.erb diff --git a/entry_types/paged/lib/pageflow_paged/react.rb b/entry_types/paged/lib/pageflow_paged/react.rb new file mode 100644 index 0000000000..bd30768e20 --- /dev/null +++ b/entry_types/paged/lib/pageflow_paged/react.rb @@ -0,0 +1,12 @@ +module PageflowPaged + # Create React based page and widget types + module React + def self.create_page_type(name, options = {}) + PageflowPaged::React::PageType.new(name, options) + end + + def self.create_widget_type(name, role, options = {}) + PageflowPaged::React::WidgetType.new(name, role, options) + end + end +end diff --git a/lib/pageflow/react/page_type.rb b/entry_types/paged/lib/pageflow_paged/react/page_type.rb similarity index 93% rename from lib/pageflow/react/page_type.rb rename to entry_types/paged/lib/pageflow_paged/react/page_type.rb index 4a0b57cd01..6e80b0964b 100644 --- a/lib/pageflow/react/page_type.rb +++ b/entry_types/paged/lib/pageflow_paged/react/page_type.rb @@ -1,4 +1,4 @@ -module Pageflow +module PageflowPaged module React class PageType < Pageflow::PageType attr_reader :name, :component_name, :file_types @@ -13,7 +13,7 @@ def initialize(name, options) end def template_path - 'pageflow/react/page' + 'pageflow_paged/react/page' end def thumbnail_candidates diff --git a/lib/pageflow/react/widget_type.rb b/entry_types/paged/lib/pageflow_paged/react/widget_type.rb similarity index 85% rename from lib/pageflow/react/widget_type.rb rename to entry_types/paged/lib/pageflow_paged/react/widget_type.rb index 5088ab6d9d..a169d857da 100644 --- a/lib/pageflow/react/widget_type.rb +++ b/entry_types/paged/lib/pageflow_paged/react/widget_type.rb @@ -1,4 +1,4 @@ -module Pageflow +module PageflowPaged module React class WidgetType < Pageflow::WidgetType attr_reader :name, :role, :options @@ -18,7 +18,7 @@ def insert_point end def render(template, entry) - template.render(File.join('pageflow', 'react', 'widget'), + template.render(File.join('pageflow_paged', 'react', 'widget'), entry: entry, name: name, server_rendering: options[:server_rendering]) diff --git a/spec/helpers/pageflow/page_background_asset_helper_spec.rb b/entry_types/paged/spec/helpers/pageflow_paged/page_background_asset_helper_spec.rb similarity index 84% rename from spec/helpers/pageflow/page_background_asset_helper_spec.rb rename to entry_types/paged/spec/helpers/pageflow_paged/page_background_asset_helper_spec.rb index c2cfc990b8..aaff0ddc25 100644 --- a/spec/helpers/pageflow/page_background_asset_helper_spec.rb +++ b/entry_types/paged/spec/helpers/pageflow_paged/page_background_asset_helper_spec.rb @@ -1,14 +1,15 @@ require 'spec_helper' require 'pageflow/matchers/have_json_ld' +require 'pageflow/used_file_test_helper' -module Pageflow - describe PageBackgroundAssetHelper do +module PageflowPaged + RSpec.describe PageBackgroundAssetHelper, type: :helper do include UsedFileTestHelper describe '#page_background_asset' do it 'renders background image div' do - entry = PublishedEntry.new(create(:entry, :published)) + entry = create(:published_entry) image_file = create_used_file(:image_file, entry: entry) page = create(:page, revision: entry.revision, @@ -20,7 +21,7 @@ module Pageflow end it 'renders structured data for background image' do - entry = PublishedEntry.new(create(:entry, :published)) + entry = create(:published_entry) image_file = create_used_file(:image_file, entry: entry) page = create(:page, revision: entry.revision, @@ -32,7 +33,7 @@ module Pageflow end it 'renders structured data for background vodep' do - entry = PublishedEntry.new(create(:entry, :published)) + entry = create(:published_entry) video_file = create_used_file(:video_file, entry: entry) page = create(:page, revision: entry.revision, @@ -47,7 +48,7 @@ module Pageflow end it 'does not render structured data if feature is disabled' do - entry = PublishedEntry.new(create(:entry, :published, without_feature: 'structured_data')) + entry = create(:published_entry, without_feature: 'structured_data') image_file = create_used_file(:image_file, entry: entry) page = create(:page, revision: entry.revision, diff --git a/entry_types/paged/spec/pageflow_paged/react_spec.rb b/entry_types/paged/spec/pageflow_paged/react_spec.rb new file mode 100644 index 0000000000..139920029a --- /dev/null +++ b/entry_types/paged/spec/pageflow_paged/react_spec.rb @@ -0,0 +1,30 @@ +require 'spec_helper' + +module PageflowPaged + RSpec.describe React, type: :helper do + describe '.create_widget_type' do + it 'renders div with data-widget attribute' do + widget_type = PageflowPaged::React.create_widget_type('some_loading_spinner', + 'loading_spinner') + entry = create(:published_entry) + + html = widget_type.render(helper, entry) + + expect(html).to have_selector('[data-widget=some_loading_spinner]') + end + + it 'supports server side rendering' do + widget_type = PageflowPaged::React.create_widget_type('classic_loading_spinner', + 'loading_spinner', + server_rendering: true) + entry = create(:published_entry) + + helper.extend(Pageflow::EntryJsonSeedHelper) + helper.extend(ReactServerSideRenderingHelper) + html = widget_type.render(helper, entry) + + expect(html).to have_selector('.loading_spinner') + end + end + end +end diff --git a/lib/pageflow/react.rb b/lib/pageflow/react.rb index 1bc2bee6c1..3cbbd16b50 100644 --- a/lib/pageflow/react.rb +++ b/lib/pageflow/react.rb @@ -1,11 +1,13 @@ module Pageflow module React + # @deprecated Use `PageflowPaged::React.create_page_type` instead. def self.create_page_type(name, options = {}) - Pageflow::React::PageType.new(name, options) + PageflowPaged::React.create_page_type(name, options) end + # @deprecated Use `PageflowPaged::React.create_widget_type` instead. def self.create_widget_type(name, role, options = {}) - Pageflow::React::WidgetType.new(name, role, options) + PageflowPaged::React.create_widget_type(name, role, options) end end end diff --git a/spec/factories/published_entries.rb b/spec/factories/published_entries.rb index 0f8a2c12eb..0cbea37005 100644 --- a/spec/factories/published_entries.rb +++ b/spec/factories/published_entries.rb @@ -4,13 +4,18 @@ module Pageflow transient do type_name { 'paged' } revision_attributes { {} } + + with_feature { nil } + without_feature { nil } end initialize_with do PublishedEntry.new(create(:entry, :published, type_name: type_name, - published_revision_attributes: revision_attributes)) + published_revision_attributes: revision_attributes, + with_feature: with_feature, + without_feature: without_feature)) end to_create { |published_entry| published_entry.entry.save! } diff --git a/spec/pageflow/react_spec.rb b/spec/pageflow/react_spec.rb deleted file mode 100644 index fb7f7fe859..0000000000 --- a/spec/pageflow/react_spec.rb +++ /dev/null @@ -1,30 +0,0 @@ -require 'spec_helper' - -module Pageflow - describe React, type: :helper do - describe '.create_widget_type' do - it 'renders div with data-widget attribute' do - widget_type = Pageflow::React.create_widget_type('some_loading_spinner', - 'loading_spinner') - entry = PublishedEntry.new(create(:entry, :published)) - - html = widget_type.render(helper, entry) - - expect(html).to have_selector('[data-widget=some_loading_spinner]') - end - - it 'supports server side rendering' do - widget_type = Pageflow::React.create_widget_type('classic_loading_spinner', - 'loading_spinner', - server_rendering: true) - entry = PublishedEntry.new(create(:entry, :published)) - - helper.extend(EntryJsonSeedHelper) - helper.extend(ReactServerSideRenderingHelper) - html = widget_type.render(helper, entry) - - expect(html).to have_selector('.loading_spinner') - end - end - end -end diff --git a/spec/support/pageflow/render_page_test_helper.rb b/spec/support/pageflow/render_page_test_helper.rb index e1218000c1..d150ddf312 100644 --- a/spec/support/pageflow/render_page_test_helper.rb +++ b/spec/support/pageflow/render_page_test_helper.rb @@ -18,7 +18,7 @@ def render_page(page_type_or_page, configuration = {}) helper.extend(InfoBoxHelper) helper.extend(BackgroundImageHelper) helper.extend(EntryJsonSeedHelper) - helper.extend(PageBackgroundAssetHelper) + helper.extend(PageflowPaged::PageBackgroundAssetHelper) helper.extend(PagesHelper) helper.extend(VideoFilesHelper)