Sha256: c0d7f517aad95d98d2d1efb5ade26593e10fbf42444a2674fd2959ff20029ef7
Contents?: true
Size: 1.32 KB
Versions: 2
Compression:
Stored size: 1.32 KB
Contents
# frozen_string_literal: true module Mongoid module Matchers # Create an matcher for delegate method # # Usage: # # it { is_expected.to delegate(:name).to(:author) } # it { is_expected.to delegate(:day).to(:created_at).with_prefix(:date) } class HaveDelegateMatcher # Set methods to look for def initialize(*args) @delegated = args[0] @method = @delegated end def to(to) @to = to self end def with_prefix(prefix) @prefix = prefix @method = :"#{@prefix}_#{@method}" self end def matches?(klass) @delegator = klass @delegator.methods.include?(@method) end def description "delegate : #{@method}" end def failure_message "expected #{@delegator} have delegator #{_method}" end def failure_message_when_negated "expected #{@delegator} have not to delegator :#{@method} #{prefix?}" end private def _method if @prefix ":#{@delegated} with prefix :#{@prefix}" else ":#{@delegated}" end end def prefix? @prefix ? ' with prefix' : '' end end def delegate(*args) p "Args : #{args}" HaveDelegateMatcher.new(*args) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mongoid-rspec-callbacks-dazzl-1.0.0 | lib/matchers/delegates.rb |
mongoid-rspec-callbacks-dazzl-1.0.0.pre.892495119 | lib/matchers/delegates.rb |