blob: 78c8c614a0d1141c477e8ce739fec3a31c51578a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../../spec_helper'
require 'puppet/defaults'
require 'puppet/indirector'
describe Puppet::Indirector, " when available to a model" do
before do
@thingie = Class.new do
extend Puppet::Indirector
end
end
it "should provide a way for the model to register an indirection under a name" do
@thingie.should respond_to(:indirects)
end
end
describe Puppet::Indirector, "when registering an indirection" do
before do
@thingie = Class.new do
extend Puppet::Indirector
end
end
it "should require a name when registering a model" do
Proc.new {@thingie.send(:indirects) }.should raise_error(ArgumentError)
end
it "should create an indirection instance to manage each indirecting model" do
@indirection = @thingie.indirects(:test)
@indirection.should be_instance_of(Puppet::Indirector::Indirection)
end
it "should not allow a model to register under multiple names" do
# Keep track of the indirection instance so we can delete it on cleanup
@indirection = @thingie.indirects :first
Proc.new { @thingie.indirects :second }.should raise_error(ArgumentError)
end
it "should make the indirection available via an accessor" do
@indirection = @thingie.indirects :first
@thingie.indirection.should equal(@indirection)
end
it "should allow specification of a default terminus" do
klass = mock 'terminus class'
Puppet::Indirector::Terminus.stubs(:terminus_class).with(:foo, :first).returns(klass)
@indirection = @thingie.indirects :first, :terminus_class => :foo
@indirection.terminus_class.should == :foo
end
after do
@indirection.delete if @indirection
end
end
describe Puppet::Indirector, " when redirecting a model" do
before do
@thingie = Class.new do
extend Puppet::Indirector
end
@indirection = @thingie.send(:indirects, :test)
end
it "should give the model the ability set a version" do
thing = @thingie.new
thing.should respond_to(:version=)
end
it "should give the model the ability retrieve a version" do
thing = @thingie.new
thing.should respond_to(:version)
end
it "should give the model the ability to lookup a model instance by letting the indirection perform the lookup" do
@indirection.expects(:find)
@thingie.find
end
it "should give the model the ability to remove model instances from a terminus by letting the indirection remove the instance" do
@indirection.expects(:destroy)
@thingie.destroy
end
it "should give the model the ability to search for model instances by letting the indirection find the matching instances" do
@indirection.expects(:search)
@thingie.search
end
it "should give the model the ability to store a model instance by letting the indirection store the instance" do
thing = @thingie.new
@indirection.expects(:save).with(thing)
thing.save
end
it "should give the model the ability to set the indirection terminus class" do
@indirection.expects(:terminus_class=).with(:myterm)
@thingie.terminus_class = :myterm
end
it "should give the model the ability to set the indirection cache class" do
@indirection.expects(:cache_class=).with(:mycache)
@thingie.cache_class = :mycache
end
after do
@indirection.delete
end
end
|