diff --git a/app/models/pageflow/entry.rb b/app/models/pageflow/entry.rb index cb110dff1..07a6b0fd7 100644 --- a/app/models/pageflow/entry.rb +++ b/app/models/pageflow/entry.rb @@ -29,8 +29,8 @@ class PasswordMissingError < StandardError has_many :imports, class_name: 'Pageflow::FileImport', dependent: :destroy - has_one :draft, -> { editable }, :class_name => 'Revision' - has_one :published_revision, -> { published }, :class_name => 'Revision' + has_one :draft, -> { editable }, class_name: 'Revision', inverse_of: :entry + has_one :published_revision, -> { published }, class_name: 'Revision', inverse_of: :entry has_one :edit_lock, :dependent => :destroy diff --git a/spec/models/pageflow/entry_spec.rb b/spec/models/pageflow/entry_spec.rb index 7922dc742..9f1e2931d 100644 --- a/spec/models/pageflow/entry_spec.rb +++ b/spec/models/pageflow/entry_spec.rb @@ -82,6 +82,22 @@ module Pageflow end end + describe '#draft' do + it 'sets inverse of association' do + entry = create(:entry) + + expect(entry.draft.entry).to be(entry) + end + end + + describe '#published_revision' do + it 'sets inverse of association' do + entry = create(:entry, :published) + + expect(entry.published_revision.entry).to be(entry) + end + end + describe '#entry_type' do it 'returns entry type' do pageflow_configure do |config| diff --git a/spec/models/pageflow/revision_spec.rb b/spec/models/pageflow/revision_spec.rb index c452d1e80..354e371a8 100644 --- a/spec/models/pageflow/revision_spec.rb +++ b/spec/models/pageflow/revision_spec.rb @@ -632,9 +632,26 @@ module Pageflow config.themes.register(:named_theme) end - site = build(:revision, theme_name: 'named_theme') + revision = build(:revision, theme_name: 'named_theme') - expect(site.theme.name).to eq('named_theme') + expect(revision.theme.name).to eq('named_theme') + end + + it 'honors feature flags of transiently set account' do + pageflow_configure do |config| + config.themes.register(:some_theme, some: :option) + + config.features.register('override_theme') do |feature_config| + feature_config.themes.register(:some_theme, some: :override) + end + end + + entry = create(:entry, draft_attributes: {theme_name: 'some_theme'}) + account_with_feature_flag = create(:account, with_feature: 'override_theme') + + entry = Entry.find(entry.id) + entry.account = account_with_feature_flag + expect(entry.draft.theme.options[:some]).to eq(:override) end end