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
6 changes: 6 additions & 0 deletions lib/sequent/core/projector.rb
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,12 @@ def initialize(persistor = Sequent::Core::Persistors::ActiveRecordPersistor.new)
@persistor = persistor
end

def self.on(*args, **opts, &block)
fail ArgumentError, 'only type based event handlers are allowed for projectors' unless args.all?(Class)

super
end

def self.replay_persistor
nil
end
Expand Down
12 changes: 12 additions & 0 deletions spec/lib/sequent/core/projector_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,18 @@ class MyProjectorTable
class MyProjectorEvent < Sequent::Core::Event
end

it 'fails when non-type based event handler is present' do
expect do
Class.new(Sequent::Core::Projector) do
manages_no_tables
self.skip_autoregister = true

on is_a(String) do
end
end
end.to raise_error(ArgumentError, 'only type based event handlers are allowed for projectors')
end

it 'fails when missing managed_tables' do
class TestProjector1 < Sequent::Core::Projector
self.skip_autoregister = true
Expand Down