module Transpec::Syntax::Mixin::NoMessageAllowance

Public Instance Methods

allow_no_message?() click to toggle source
# File lib/transpec/syntax/mixin/no_message_allowance.rb, line 15
def allow_no_message?
  any_number_of_times? || at_least_zero?
end
any_number_of_times?() click to toggle source
# File lib/transpec/syntax/mixin/no_message_allowance.rb, line 24
def any_number_of_times?
  any_number_of_times_node
end
at_least_zero?() click to toggle source
# File lib/transpec/syntax/mixin/no_message_allowance.rb, line 28
def at_least_zero?
  at_least_zero_node
end
remove_no_message_allowance!() click to toggle source
# File lib/transpec/syntax/mixin/no_message_allowance.rb, line 19
def remove_no_message_allowance!
  remove_any_number_of_times!
  remove_at_least_zero!
end

Private Instance Methods

any_number_of_times_node() click to toggle source
# File lib/transpec/syntax/mixin/no_message_allowance.rb, line 50
def any_number_of_times_node
  Util.each_backward_chained_node(node) do |chained_node|
    method_name = chained_node.children[1]
    return chained_node if method_name == :any_number_of_times
  end
end
at_least_zero_node() click to toggle source
# File lib/transpec/syntax/mixin/no_message_allowance.rb, line 57
def at_least_zero_node
  Util.each_backward_chained_node(node) do |chained_node|
    _, method_name, arg_node = *chained_node
    next unless method_name == :at_least
    return chained_node if arg_node == s(:int, 0)
  end
end
remove_any_number_of_times!() click to toggle source
# File lib/transpec/syntax/mixin/no_message_allowance.rb, line 34
def remove_any_number_of_times!
  return unless any_number_of_times?
  remove_dot_and_method!(any_number_of_times_node)
end
remove_at_least_zero!() click to toggle source
# File lib/transpec/syntax/mixin/no_message_allowance.rb, line 39
def remove_at_least_zero!
  return unless at_least_zero?
  remove_dot_and_method!(at_least_zero_node)
end
remove_dot_and_method!(send_node) click to toggle source
# File lib/transpec/syntax/mixin/no_message_allowance.rb, line 44
def remove_dot_and_method!(send_node)
  map = send_node.loc
  dot_and_method_range = map.dot.join(map.expression.end)
  remove(dot_and_method_range)
end