Exception: PgEventstore::WrongExpectedTypesRevisionError

Inherits:
Error
  • Object
show all
Defined in:
lib/pg_eventstore/errors.rb,
sig/pg_eventstore/errors.rbs

Defined Under Namespace

Classes: Verdict

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Error

#as_json, #to_h

Constructor Details

#initialize(stream:, verdicts:) ⇒ WrongExpectedTypesRevisionError

Returns a new instance of WrongExpectedTypesRevisionError.

Parameters:



152
153
154
155
156
# File 'lib/pg_eventstore/errors.rb', line 152

def initialize(stream:, verdicts:)
  @stream = stream
  @verdicts = verdicts
  super(user_friendly_message)
end

Instance Attribute Details

#streamStream

Returns the value of attribute stream.

Returns:



145
146
147
# File 'lib/pg_eventstore/errors.rb', line 145

def stream
  @stream
end

#verdictsArray[Verdict]

Returns the value of attribute verdicts.

Returns:



148
149
150
# File 'lib/pg_eventstore/errors.rb', line 148

def verdicts
  @verdicts
end

Instance Method Details

#event_descr(verdict) ⇒ String

Parameters:

Returns:

  • (String)


209
210
211
212
213
214
215
216
217
218
219
# File 'lib/pg_eventstore/errors.rb', line 209

def event_descr(verdict)
  if verdict.event_type == :any
    markers = verdict.expected_markers.map(&:inspect).join(', ')
    "any event with some of #{markers} marker(s)"
  elsif verdict.expected_markers
    markers = verdict.expected_markers.map(&:inspect).join(', ')
    "#{verdict.event_type.inspect} event with some of #{markers} marker(s)"
  else
    "#{verdict.event_type.inspect} event"
  end
end

#event_is_absent(verdict) ⇒ String

Parameters:

Returns:

  • (String)


180
181
182
183
184
185
# File 'lib/pg_eventstore/errors.rb', line 180

def event_is_absent(verdict)
  "    Expected \#{stream_descr} stream to contain \#{event_descr(verdict)} with \#{revision_descr(verdict)}, \\\n    but this event does not exist.\n  TEXT\nend\n".strip

#event_is_present(verdict) ⇒ String

Parameters:

Returns:

  • (String)


189
190
191
# File 'lib/pg_eventstore/errors.rb', line 189

def event_is_present(verdict)
  "Expected #{stream_descr} stream not to contain #{event_descr(verdict)}, but it actually exists."
end

#event_revision_does_not_match(verdict) ⇒ String

Parameters:

Returns:

  • (String)


195
196
197
198
199
200
# File 'lib/pg_eventstore/errors.rb', line 195

def event_revision_does_not_match(verdict)
  "    Expected \#{stream_descr} stream to contain \#{event_descr(verdict)} with \#{revision_descr(verdict)}, \\\n    but it actually has \#{verdict.current_revision} revision.\n  TEXT\nend\n".strip

#revision_descr(verdict) ⇒ String

Parameters:

Returns:

  • (String)


223
224
225
226
227
228
229
230
231
# File 'lib/pg_eventstore/errors.rb', line 223

def revision_descr(verdict)
  if verdict.expected_revision.is_a?(Integer)
    "#{verdict.expected_revision} revision"
  elsif verdict.expected_revision == :event_exists
    'some revision'
  else
    "#{verdict.expected_revision.inspect} revision"
  end
end

#stream_descrString

Returns:

  • (String)


203
204
205
# File 'lib/pg_eventstore/errors.rb', line 203

def stream_descr
  stream.to_hash.inspect
end

#user_friendly_messageString

Returns:

  • (String)


161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# File 'lib/pg_eventstore/errors.rb', line 161

def user_friendly_message
  messages =
    verdicts.map do |verdict|
      case verdict.verdict
      when :event_is_absent
        event_is_absent(verdict)
      when :event_revision_does_not_match
        event_revision_does_not_match(verdict)
      when :event_is_present
        event_is_present(verdict)
      else
        Utils.missing_implementation!(verdict.verdict)
      end
    end
  messages.join('; ')
end