class HasSerialized::Matchers::HaveSerializedAttribute

Public Class Methods

new(attr_name) click to toggle source
# File lib/has_serialized/matchers/have_serialized_attribute.rb, line 4
def initialize(attr_name)
  @attr_name = attr_name
end

Public Instance Methods

description() click to toggle source
# File lib/has_serialized/matchers/have_serialized_attribute.rb, line 36
def description
  "Ensures that #{@model} has serialized attribute #{@attr_name}."
end
failure_message() click to toggle source
# File lib/has_serialized/matchers/have_serialized_attribute.rb, line 23
def failure_message
  base_message = %Q{expected #{@model.class.name} to
  have serialized attribute #{@attr_name}
  in #{@column}
  }

  if @value.to_s
    base_message += "with default value #{@value}"
  end

  base_message
end
in(column) click to toggle source
# File lib/has_serialized/matchers/have_serialized_attribute.rb, line 13
def in(column)
  @column = column
  self
end
matches?(model) click to toggle source
# File lib/has_serialized/matchers/have_serialized_attribute.rb, line 8
def matches?(model)
  @model = model
  methods_correct? && values_correct?
end
with_default_value(value) click to toggle source
# File lib/has_serialized/matchers/have_serialized_attribute.rb, line 18
def with_default_value(value)
  @value = value
  self
end

Private Instance Methods

methods_correct?() click to toggle source
# File lib/has_serialized/matchers/have_serialized_attribute.rb, line 42
def methods_correct?
  unless @column
    fail %Q{
    Please specify the column in which to find the `#{@attr_name}`.
    Ex: have_serialized_attribute(:#{@attr_name}).in(:column_name)
    }
  end

  serialized_column = @model.send(@column)
  serialized_column and serialized_column.has_key? @attr_name
end
values_correct?() click to toggle source
# File lib/has_serialized/matchers/have_serialized_attribute.rb, line 54
def values_correct?
  if @value
    @model.send(@attr_name) == @value
  else
    true
  end
end