3
Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
5
require 'puppet/resource/catalog'
8
describe "Puppet::Resource::Catalog::Queue" do
9
confine "Missing pson support; cannot test queue" => Puppet.features.pson?
12
Puppet::Resource::Catalog.indirection.terminus(:queue)
13
@catalog = Puppet::Resource::Catalog.new
15
@one = Puppet::Resource.new(:file, "/one")
16
@two = Puppet::Resource.new(:file, "/two")
17
@catalog.add_resource(@one, @two)
19
@catalog.add_edge(@one, @two)
24
after { Puppet.settings.clear }
26
it "should render catalogs to pson and send them via the queue client when catalogs are saved" do
27
terminus = Puppet::Resource::Catalog.indirection.terminus(:queue)
29
client = mock 'client'
30
terminus.stubs(:client).returns client
32
client.expects(:send_message).with(:catalog, @catalog.to_pson)
34
request = Puppet::Indirector::Request.new(:catalog, :save, "foo", :instance => @catalog)
36
terminus.save(request)
39
it "should intern catalog messages when they are passed via a subscription" do
40
client = mock 'client'
41
Puppet::Resource::Catalog::Queue.stubs(:client).returns client
43
pson = @catalog.to_pson
45
client.expects(:subscribe).with(:catalog).yields(pson)
47
Puppet.expects(:err).never
50
Puppet::Resource::Catalog::Queue.subscribe do |catalog|
54
catalog = result.shift
55
catalog.should be_instance_of(Puppet::Resource::Catalog)
57
catalog.resource(:file, "/one").should be_instance_of(Puppet::Resource)
58
catalog.resource(:file, "/two").should be_instance_of(Puppet::Resource)
59
catalog.should be_edge(catalog.resource(:file, "/one"), catalog.resource(:file, "/two"))