Class: ModelTimeline::RSpec::Matchers::HaveTimelineAction Private

Inherits:
Object
  • Object
show all
Defined in:
lib/model_timeline/rspec/matchers.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

RSpec matcher to check if a model has timeline entries with a specific action

Instance Method Summary collapse

Constructor Details

#initialize(action, association_name) ⇒ HaveTimelineAction

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Initialize the matcher

Parameters:

  • action (String, Symbol)

    The action to look for



148
149
150
151
# File 'lib/model_timeline/rspec/matchers.rb', line 148

def initialize(action, association_name)
  @action = action.to_s
  @association_name = association_name
end

Instance Method Details

#failure_messageString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Message displayed when the expectation fails

Returns:

  • (String)

    A descriptive failure message



165
166
167
# File 'lib/model_timeline/rspec/matchers.rb', line 165

def failure_message
  "expected #{@subject} to have recorded action '#{@action}', but none was found"
end

#failure_message_when_negatedString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Message displayed when the negated expectation fails

Returns:

  • (String)

    A descriptive failure message for negated expectations



172
173
174
# File 'lib/model_timeline/rspec/matchers.rb', line 172

def failure_message_when_negated
  "expected #{@subject} not to have recorded action '#{@action}', but it was found"
end

#matches?(subject) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Check if the subject matches the expectations

Parameters:

  • subject (Object)

    The model to check for timeline entries

Returns:

  • (Boolean)

    True if the model has timeline entries with the specified action



157
158
159
160
# File 'lib/model_timeline/rspec/matchers.rb', line 157

def matches?(subject)
  @subject = subject
  @subject.public_send(@association_name).where(action: @action).exists?
end