Skip to content

Commit 0860d1e

Browse files
Merge pull request #516 from zilverline/fix/spec-projectors-managed-tables
All spec defined projector must indicate managed tables
2 parents f654f12 + f812479 commit 0860d1e

7 files changed

Lines changed: 11 additions & 7 deletions

File tree

.rubocop.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,3 +342,6 @@ Style/CollectionQuerying:
342342
Enabled: true
343343
Lint/AmbiguousRange:
344344
Enabled: true
345+
346+
Style/OneClassPerFile:
347+
Enabled: false

lib/sequent/core/active_projectors_event_publisher.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def process_events(event_handlers, ...)
3030

3131
def ensure_no_unknown_active_projectors!(event_handlers)
3232
registered_projectors = event_handlers
33-
.select { |x| x.is_a?(Projector) }
33+
.grep(Projector)
3434
.map { |x| x.class.name }
3535
activated_projectors = Projectors.projector_states
3636
.values

lib/sequent/core/event_store.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ def event_streams_enumerator(aggregate_type: nil, group_size: 100)
267267
end
268268

269269
def update_unique_keys(event_streams)
270-
fail ArgumentError, 'array of stream records expected' unless event_streams.all? { |x| x.is_a?(EventStream) }
270+
fail ArgumentError, 'array of stream records expected' unless event_streams.all?(EventStream)
271271

272272
call_procedure(connection, 'update_unique_keys', [event_streams.to_json])
273273
rescue ActiveRecord::RecordNotUnique => e

lib/sequent/core/helpers/unique_keys.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ module ClassMethods
3333
# ```
3434
def unique_key(scope, *attributes, **kwargs)
3535
fail ArgumentError, "'#{scope}' is not a symbol" unless scope.is_a?(Symbol)
36-
fail ArgumentError, 'attributes must be symbols' unless attributes.all? { |attr| attr.is_a?(Symbol) }
36+
fail ArgumentError, 'attributes must be symbols' unless attributes.all?(Symbol)
3737

3838
@unique_key_definitions ||= {}
3939

lib/sequent/core/persistors/replay_optimized_postgres_persistor.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def hash
8282

8383
def struct_cache
8484
@struct_cache ||= Hash.new do |hash, record_class|
85-
struct_class = Struct.new(*record_class.column_names.map(&:to_sym), keyword_init: true) do
85+
struct_class = Struct.new(*record_class.column_names.map(&:to_sym)) do
8686
include InMemoryStruct
8787
end
8888
hash[record_class] = struct_class

lib/sequent/core/projector.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def version = projector_version || Sequent.migrations_class&.version || 1
2828
end
2929

3030
def self.projectors
31-
Sequent.configuration.event_handlers.select { |x| x.is_a? Migratable }.map(&:class)
31+
Sequent.configuration.event_handlers.grep(Migratable).map(&:class)
3232
end
3333

3434
def self.included(host_class)
@@ -187,7 +187,7 @@ def ensure_record_class_supported!(record_class)
187187
def ensure_valid!
188188
if self.class.managed_tables.nil?
189189
fail <<~EOS.chomp
190-
A Projector must manage at least one table. Did you forget to add `managed_tables` to #{self.class.name}?
190+
A Projector must manage at least one table. Did you forget to add `managed_tables` to #{self.class}?
191191
EOS
192192
end
193193
end

spec/lib/sequent/core/projector_spec.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,13 @@ class MyOtherProjectorTable
3939
context 'versioning' do
4040
let(:parent_projector_class) do
4141
Class.new(Sequent::Core::Projector) do
42+
manages_no_tables
4243
self.version = 3
4344
end
4445
end
4546

4647
it 'should default to 1 if not specified' do
47-
projector_class = Class.new(Sequent::Core::Projector)
48+
projector_class = Class.new(Sequent::Core::Projector) { manages_no_tables }
4849

4950
expect(projector_class.version).to eq(1)
5051
end

0 commit comments

Comments
 (0)