class RSpec::Puppet::ManifestMatchers::CountGeneric

Constants

DEFAULT_RESOURCES

Attributes

resource_type[R]

Public Class Methods

new(type, count, *method) click to toggle source
# File lib/rspec-puppet/matchers/count_generic.rb, line 12
def initialize(type, count, *method)
  if type.nil?
    @type = method[0].to_s.gsub(/^have_(.+)_resource_count$/, '\1')
  else
    @type = type
  end
  @resource_type = referenced_type(@type)
  @expected_number = count.to_i
end

Public Instance Methods

description() click to toggle source
# File lib/rspec-puppet/matchers/count_generic.rb, line 42
def description
  desc = []

  desc << "contain exactly #{@expected_number}"
  if @type == "class"
    desc << "#{@expected_number == 1 ? "class" : "classes" }"
  else
    unless @type == "resource"
      desc << "#{@resource_type}"
    end
    desc << "#{@expected_number == 1 ? "resource" : "resources" }"
  end

  desc.join(" ")
end
failure_message() click to toggle source
# File lib/rspec-puppet/matchers/count_generic.rb, line 58
def failure_message
  "expected that the catalogue would " + description + " but it contains #{@actual_number}"
end
failure_message_when_negated() click to toggle source
# File lib/rspec-puppet/matchers/count_generic.rb, line 62
def failure_message_when_negated
  "expected that the catalogue would not " + description + " but it does"
end
matches?(catalogue) click to toggle source
# File lib/rspec-puppet/matchers/count_generic.rb, line 22
def matches?(catalogue)
  @catalogue = catalogue.call

  resources = @catalogue.resources.reject do |res|
    DEFAULT_RESOURCES.include?(res.ref)
  end

  @actual_number = if @type == 'resource'
                     resources.count do |res|
                       !['Class', 'Node'].include?(res.type)
                     end
                   else
                     resources.count do |res|
                       res.type == @resource_type
                     end
                   end

  @actual_number == @expected_number
end
supports_block_expectations() click to toggle source
# File lib/rspec-puppet/matchers/count_generic.rb, line 66
def supports_block_expectations
  true
end
supports_value_expectations() click to toggle source
# File lib/rspec-puppet/matchers/count_generic.rb, line 70
def supports_value_expectations
  true
end

Private Instance Methods

referenced_type(type) click to toggle source
# File lib/rspec-puppet/matchers/count_generic.rb, line 76
def referenced_type(type)
  type.split('__').map { |r| r.capitalize }.join('::')
end