Skip to content

Commit efdfefd

Browse files
authored
Merge pull request #2078 from tf/entry-created-hook
Invoke hook when entry is created via admin
2 parents cf3437e + 520ab37 commit efdfefd

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

admins/pageflow/entry.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,10 @@ module Pageflow
220220
end
221221
end
222222

223+
after_create do |entry|
224+
Pageflow.config.hooks.invoke(:entry_created, entry:) if entry.persisted?
225+
end
226+
223227
before_update do |entry|
224228
if entry.account_id_changed? && !authorized?(:update_site_on, resource)
225229
entry.site = entry.account.default_site

spec/controllers/admin/entries_controller_spec.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -724,6 +724,31 @@ def self.name
724724
expect(Pageflow::Entry.last.permalink).to have_attributes(slug: 'custom-slug')
725725
end
726726

727+
it 'invokes entry_creared hook' do
728+
account = create(:account)
729+
subscriber = double('subscriber', call: nil)
730+
Pageflow.config.hooks.on(:entry_created, subscriber)
731+
732+
sign_in(create(:user, :manager, on: account))
733+
post(:create, params: {entry: {title: 'some_title'}})
734+
735+
expect(subscriber).to have_received(:call).with(entry: kind_of(Pageflow::Entry))
736+
end
737+
738+
it 'does not invoke entry_creared hook if validation fails' do
739+
account = create(:account)
740+
subscriber = double('subscriber', call: nil)
741+
Pageflow.config.hooks.on(:entry_created, subscriber)
742+
743+
sign_in(create(:user, :manager, on: account))
744+
expect {
745+
post(:create, params: {entry: {title: ''}})
746+
}.not_to(change { Pageflow::Entry.count })
747+
748+
expect(response.body).to have_selector('.error')
749+
expect(subscriber).not_to have_received(:call)
750+
end
751+
727752
it 'renders validation error if permalink directory belongs to different site' do
728753
user = create(:user)
729754
account = create(:account, with_publisher: user)

0 commit comments

Comments
 (0)