Sha256: 221cb420312fb90f92567cf7fad10a4550d1107949a51ae59e8bd4d4fd265275

Contents?: true

Size: 888 Bytes

Versions: 2

Compression:

Stored size: 888 Bytes

Contents

require 'json'

module SandthornSequelProjection
  class MockEventStore

    def initialize(events = nil)
      @events = Array.wrap(events)
    end

    def reset(events = [])
      @events = events
    end

    def add_event(event)
      @events << event
    end

    alias_method :add, :add_event

    def get_events(after_sequence_number: 0, take: 1)
      unless numeric?(after_sequence_number, take)
        raise ArgumentError, "arguments have to be numbers, received: #{after_sequence_number.inspect} and #{take.inspect}"
      end
      start = after_sequence_number
      stop = after_sequence_number + take - 1
      Array.wrap(@events[start..stop])
    end

    def numeric?(*args)
      args.all? { |arg| arg.is_a?(Numeric) }
    end

    def self.with_data
      self.new(JSON.parse(File.read("./spec/test_data/event_data.json"), symbolize_names: true))
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sandthorn_sequel_projection-0.0.2 spec/support/mock_event_store.rb
sandthorn_sequel_projection-0.0.1 spec/support/mock_event_store.rb