class Mongoid::Matchers::BeStoredIn

Public Class Methods

new(expected) click to toggle source
# File lib/matchers/be_stored_in.rb, line 8
def initialize(expected)
  @expected_options = \
    expected
      .transform_values { |v| v.to_sym rescue v }
      .symbolize_keys
end

Public Instance Methods

description() click to toggle source
# File lib/matchers/be_stored_in.rb, line 20
def description
  "be stored in #{@expected_options.inspect}"
end
failure_message() click to toggle source
# File lib/matchers/be_stored_in.rb, line 24
def failure_message
  "Expected #{@model.inspect} to #{description}, got #{actual_options.inspect}"
end
failure_message_when_negated() click to toggle source
# File lib/matchers/be_stored_in.rb, line 28
def failure_message_when_negated
  "Expected #{@model.inspect} not to #{description}, got #{actual_options.inspect}"
end
matches?(actual) click to toggle source
# File lib/matchers/be_stored_in.rb, line 15
def matches?(actual)
  @model = actual.is_a?(Class) ? actual : actual.class
  actual_options == @expected_options
end

Private Instance Methods

actual_options() click to toggle source
# File lib/matchers/be_stored_in.rb, line 34
def actual_options
  @actual_options ||= begin
    hash = @model.storage_options.slice(*@expected_options.keys)
    hash.each do |option, value|
      hash[option] =
        if value.is_a?(Proc)
          evaluated_value = @model.persistence_context.send("#{option}_name")
          evaluated_value.to_sym rescue evaluated_value
        else
          value.to_sym rescue value
        end
    end
  end
end