Sha256: e3f7a09d82f14de258754221c0519c2f3b99fa3a36e1fcce4ca24cafb886a8b8
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
module RSpec module Virtus class Matcher def initialize(attribute_name) @attribute_name = attribute_name @options = {} end def description "have #{@attribute_name} defined" end def of_type(type, options={}) @options[:type] = type @options[:member_type] = options.delete(:member_type) self end def matches?(subject) @subject = subject attribute_exists? && type_correct? end def failure_message "expected #{@attribute_name} to be defined" end def failure_message_when_negated "expected #{@attribute_name} not to be defined" end private def attribute @subject.attribute_set[@attribute_name] end def member_type attribute.member_type.primitive end def attribute_type attribute.primitive end def attribute_exists? !attribute.nil? end def type_correct? if @options[:member_type] member_type == @options[:member_type] && attribute_type == @options[:type] elsif @options[:type] attribute_type == @options[:type] else true end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rspec-virtus-1.0.2 | lib/rspec-virtus/matcher.rb |