3
require File.dirname(__FILE__) + '/../../spec_helper'
4
require 'puppet/util/queue'
7
def make_test_client_class(n)
20
mod = Puppet::Util::Queue
21
client_classes = { :default => make_test_client_class('Bogus::Default'), :setup => make_test_client_class('Bogus::Setup') }
22
mod.register_queue_type(client_classes[:default], :default)
23
mod.register_queue_type(client_classes[:setup], :setup)
25
describe Puppet::Util::Queue do
32
context 'when determining a type name from a class' do
33
it 'should handle a simple one-word class name' do
34
mod.queue_type_from_class(make_test_client_class('Foo')).should == :foo
37
it 'should handle a simple two-word class name' do
38
mod.queue_type_from_class(make_test_client_class('FooBar')).should == :foo_bar
41
it 'should handle a two-part class name with one terminating word' do
42
mod.queue_type_from_class(make_test_client_class('Foo::Bar')).should == :bar
45
it 'should handle a two-part class name with two terminating words' do
46
mod.queue_type_from_class(make_test_client_class('Foo::BarBah')).should == :bar_bah
50
context 'when registering a queue client class' do
51
c = make_test_client_class('Foo::Bogus')
52
it 'uses the proper default name logic when type is unspecified' do
53
mod.register_queue_type(c)
54
mod.queue_type_to_class(:bogus).should == c
57
it 'uses an explicit type name when provided' do
58
mod.register_queue_type(c, :aardvark)
59
mod.queue_type_to_class(:aardvark).should == c
62
it 'throws an exception when type names conflict' do
63
mod.register_queue_type( make_test_client_class('Conflict') )
64
lambda { mod.register_queue_type( c, :conflict) }.should raise_error
67
it 'handle multiple, non-conflicting registrations' do
68
a = make_test_client_class('TestA')
69
b = make_test_client_class('TestB')
70
mod.register_queue_type(a)
71
mod.register_queue_type(b)
72
mod.queue_type_to_class(:test_a).should == a
73
mod.queue_type_to_class(:test_b).should == b
76
it 'throws an exception when type name is unknown' do
77
lambda { mod.queue_type_to_class(:nope) }.should raise_error
81
context 'when determining client type' do
82
it 'returns client class based on the :queue_type setting' do
83
Puppet.settings.expects(:value).with(:queue_type).returns(:myqueue)
84
Puppet::Util::Queue.expects(:queue_type_to_class).with(:myqueue).returns "eh"
85
@class.client_class.should == "eh"