Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module Pageflow
module PageflowPaged
# @api private
module ReactServerSideRenderingHelper
def render_page_react_component(entry, page, component_name)
Expand Down
12 changes: 12 additions & 0 deletions entry_types/paged/lib/pageflow_paged/react.rb
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module Pageflow
module PageflowPaged
module React
class PageType < Pageflow::PageType
attr_reader :name, :component_name, :file_types
Expand All @@ -13,7 +13,7 @@ def initialize(name, options)
end

def template_path
'pageflow/react/page'
'pageflow_paged/react/page'
end

def thumbnail_candidates
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module Pageflow
module PageflowPaged
module React
class WidgetType < Pageflow::WidgetType
attr_reader :name, :role, :options
Expand All @@ -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])
Expand Down
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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,
Expand Down
30 changes: 30 additions & 0 deletions entry_types/paged/spec/pageflow_paged/react_spec.rb
Original file line number Diff line number Diff line change
@@ -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
6 changes: 4 additions & 2 deletions lib/pageflow/react.rb
Original file line number Diff line number Diff line change
@@ -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
7 changes: 6 additions & 1 deletion spec/factories/published_entries.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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! }
Expand Down
30 changes: 0 additions & 30 deletions spec/pageflow/react_spec.rb

This file was deleted.

2 changes: 1 addition & 1 deletion spec/support/pageflow/render_page_test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down