def verify_constants_to_transfer!
return [] unless @transfer_nested_constants
{ @original_value => "the original value", @stubbed_value => "the stubbed value" }.each do |value, description|
unless value.respond_to?(:constants)
raise ArgumentError,
"Cannot transfer nested constants for #{@full_constant_name} " +
"since #{description} is not a class or module and only classes " +
"and modules support nested constants."
end
end
if @transfer_nested_constants.is_a?(Array)
@transfer_nested_constants = @transfer_nested_constants.map(&:to_s) if RUBY_VERSION == '1.8.7'
undefined_constants = @transfer_nested_constants - @original_value.constants
if undefined_constants.any?
available_constants = @original_value.constants - @transfer_nested_constants
raise ArgumentError,
"Cannot transfer nested constant(s) #{undefined_constants.join(' and ')} " +
"for #{@full_constant_name} since they are not defined. Did you mean " +
"#{available_constants.join(' or ')}?"
end
@transfer_nested_constants
else
@original_value.constants
end
end