Skip to content

Commit d50a34a

Browse files
committed
Refactor spec tests
1 parent 5de7366 commit d50a34a

File tree

3 files changed

+92
-61
lines changed

3 files changed

+92
-61
lines changed

spec/integration/provider/oratab/parsed_spec.rb

Lines changed: 64 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,51 +8,87 @@
88

99
before :each do
1010
described_class.stubs(:suitable?).returns true
11+
described_class.stubs(:default_target).returns fake_oratab
1112
Puppet::Type.type(:oratab).stubs(:defaultprovider).returns described_class
13+
end
1214

13-
@fake_oratab = tmpfilename('oratab')
14-
FileUtils.cp(my_fixture('input'), @fake_oratab)
15-
described_class.stubs(:default_target).returns @fake_oratab
15+
let :fake_oratab do
16+
filename = tmpfilename('oratab')
17+
unless File.exists? filename
18+
FileUtils.cp(my_fixture('input'), filename)
19+
end
20+
filename
21+
end
1622

17-
@resource_absent = Puppet::Type.type(:oratab).new(
23+
# this resource is absent in our fake oratab
24+
let :resource_absent do
25+
Puppet::Type.type(:oratab).new(
1826
:name => 'NO_SUCH_DATABASE',
1927
:ensure => :absent
2028
)
21-
@resource_present = Puppet::Type.type(:oratab).new(
29+
end
30+
31+
# this resource is present in our fake oratab and completly insync
32+
let :resource_present do
33+
Puppet::Type.type(:oratab).new(
2234
:name => 'DB_INSYNC',
2335
:ensure => :present,
2436
:home => '/u01/app/oracle/product/10.1.0/db_1',
2537
:atboot => :yes
2638
)
27-
@resource_create = Puppet::Type.type(:oratab).new(
39+
end
40+
41+
# this resource is not present in our fake oratab
42+
let :resource_create do
43+
Puppet::Type.type(:oratab).new(
2844
:name => 'DB_CREATE',
2945
:ensure => :present,
3046
:home => '/u01/app/oracle/product/10.1.0/db_2',
3147
:description => 'added by puppet',
3248
:atboot => :no
3349
)
34-
@resource_delete = Puppet::Type.type(:oratab).new(
50+
end
51+
52+
# this resource is present in our fake oratab
53+
let :resource_delete do
54+
Puppet::Type.type(:oratab).new(
3555
:name => 'DB_DELETE',
3656
:ensure => :absent
3757
)
38-
@resource_sync_home = Puppet::Type.type(:oratab).new(
58+
end
59+
60+
# this resource is present in our fake oratab but with :home => '/u01/app/oracle/product/10.1.0/db_4'
61+
let :resource_sync_home do
62+
Puppet::Type.type(:oratab).new(
3963
:name => 'DB_SYNC_HOME',
4064
:ensure => :present,
4165
:home => '/new/home'
4266
)
43-
@resource_sync_atboot = Puppet::Type.type(:oratab).new(
67+
end
68+
69+
# this resource is present in our fake oratab but with :atboot => :no
70+
let :resource_sync_atboot do
71+
Puppet::Type.type(:oratab).new(
4472
:name => 'DB_SYNC_ATBOOT',
4573
:ensure => :present,
4674
:home => '/u01/app/oracle/product/10.1.0/db_1',
4775
:atboot => :yes
4876
)
49-
@resource_sync_description = Puppet::Type.type(:oratab).new(
77+
end
78+
79+
# this resource is present in our fake oratab but with :description => 'change me'
80+
let :resource_sync_description do
81+
Puppet::Type.type(:oratab).new(
5082
:name => 'DB_SYNC_DESCRIPTION',
5183
:ensure => :present,
5284
:atboot => :no,
5385
:description => 'new desc'
5486
)
55-
@resource_delete_description = Puppet::Type.type(:oratab).new(
87+
end
88+
89+
# this resource is present in our fake oratab but with :description => 'delete me'
90+
let :resource_delete_description do
91+
Puppet::Type.type(:oratab).new(
5692
:name => 'DB_DELETE_DESCRIPTION',
5793
:ensure => :present,
5894
:description => ''
@@ -75,7 +111,7 @@ def run_in_catalog(*resources)
75111
end
76112

77113
def check_content_against(fixture)
78-
content = File.read(@fake_oratab).lines.map{|l| l.chomp}.reject{|l| l=~ /^\s*#|^\s*$/}.sort.join("\n")
114+
content = File.read(fake_oratab).lines.map{|l| l.chomp}.reject{|l| l=~ /^\s*#|^\s*$/}.sort.join("\n")
79115
expected_content = File.read(my_fixture(fixture)).lines.map{|l| l.chomp}.reject{|l| l=~ /^\s*#|^\s*$/}.sort.join("\n")
80116
content.should == expected_content
81117
end
@@ -84,44 +120,44 @@ def check_content_against(fixture)
84120

85121
describe "with ensure set to absent" do
86122
it "should do nothing if already absent" do
87-
run_in_catalog(@resource_absent)
123+
run_in_catalog(resource_absent)
88124
check_content_against('input')
89125
end
90126

91127
it "should remove oratab entry if currently present" do
92-
run_in_catalog(@resource_delete)
128+
run_in_catalog(resource_delete)
93129
check_content_against('output_single_delete')
94130
end
95131
end
96132

97133
describe "with ensure set to present" do
98134
it "should do nothing if already present and in sync" do
99-
run_in_catalog(@resource_present)
135+
run_in_catalog(resource_present)
100136
check_content_against('input')
101137
end
102138

103139
it "should create an oratab entry if currently absent" do
104-
run_in_catalog(@resource_create)
140+
run_in_catalog(resource_create)
105141
check_content_against('output_single_create')
106142
end
107143

108144
it "should sync home if out of sync" do
109-
run_in_catalog(@resource_sync_home)
145+
run_in_catalog(resource_sync_home)
110146
check_content_against('output_single_sync_home')
111147
end
112148

113149
it "should sync atboot if out of sync" do
114-
run_in_catalog(@resource_sync_atboot)
150+
run_in_catalog(resource_sync_atboot)
115151
check_content_against('output_single_sync_atboot')
116152
end
117153

118154
it "should sync description if out sync" do
119-
run_in_catalog(@resource_sync_description)
155+
run_in_catalog(resource_sync_description)
120156
check_content_against('output_single_sync_description')
121157
end
122158

123159
it "should remove the description (including the #-sign) if description is empty" do
124-
run_in_catalog(@resource_delete_description)
160+
run_in_catalog(resource_delete_description)
125161
check_content_against('output_single_sync_description_delete')
126162
end
127163
end
@@ -130,14 +166,14 @@ def check_content_against(fixture)
130166
describe "when managing multiple resources" do
131167
it "should to the right thing (tm)" do
132168
run_in_catalog(
133-
@resource_absent,
134-
@resource_present,
135-
@resource_create,
136-
@resource_delete,
137-
@resource_sync_home,
138-
@resource_sync_atboot,
139-
@resource_sync_description,
140-
@resource_delete_description
169+
resource_absent,
170+
resource_present,
171+
resource_create,
172+
resource_delete,
173+
resource_sync_home,
174+
resource_sync_atboot,
175+
resource_sync_description,
176+
resource_delete_description
141177
)
142178
check_content_against('output_multiple')
143179
end

spec/unit/provider/oratab/parsed_spec.rb

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,28 @@
88
described_class.stubs(:suitable?).returns true
99
described_class.stubs(:default_target).returns my_fixture('oratab')
1010
Puppet::Type.type(:oratab).stubs(:defaultprovider).returns described_class
11-
@resource = Puppet::Type.type(:oratab).new(
11+
end
12+
13+
let :provider do
14+
described_class.new(
1215
:name => 'TEST01',
1316
:ensure => :present,
1417
:home => '/u01/app/oracle/product/9.2.0.1.0',
1518
:atboot => :yes,
16-
:description => 'managed by puppet'
19+
:description => 'managed by puppet',
1720
)
18-
@provider = described_class.new(@resource)
1921
end
2022

2123
[:destroy, :create, :exists?].each do |method|
2224
it "should respond to #{method}" do
23-
@provider.should respond_to method
25+
provider.should respond_to method
2426
end
2527
end
2628

2729
[:home, :atboot, :description].each do |property|
2830
it "should have getter and setter for property #{property}" do
29-
@provider.should respond_to property
30-
@provider.should respond_to "#{property}=".intern
31+
provider.should respond_to property
32+
provider.should respond_to "#{property}=".intern
3133
end
3234
end
3335

spec/unit/type/oratab_spec.rb

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,6 @@
44

55
describe Puppet::Type.type(:oratab) do
66

7-
before do
8-
@provider_class = described_class.provide(:fake) { mk_resource_methods }
9-
@provider_class.stubs(:suitable?).returns true
10-
described_class.stubs(:defaultprovider).returns @provider_class
11-
end
12-
137
it "should have :name as its keyattribute" do
148
described_class.key_attributes.should == [:name]
159
end
@@ -32,60 +26,60 @@
3226

3327
describe "for ensure" do
3428
it "should support present" do
35-
proc { described_class.new(:name => 'foo', :ensure => :present) }.should_not raise_error
29+
expect { described_class.new(:name => 'foo', :ensure => :present) }.to_not raise_error
3630
end
3731

3832
it "should support absent" do
39-
proc { described_class.new(:name => 'foo', :ensure => :absent) }.should_not raise_error
33+
expect { described_class.new(:name => 'foo', :ensure => :absent) }.to_not raise_error
4034
end
4135

4236
it "should not support other values" do
43-
proc { described_class.new(:name => 'foo', :ensure => :foo) }.should raise_error(Puppet::Error, /Invalid value/)
37+
expect { described_class.new(:name => 'foo', :ensure => :foo) }.to raise_error(Puppet::Error, /Invalid value/)
4438
end
4539
end
4640

4741
describe "for name" do
4842
it "should support a valid name" do
49-
proc { described_class.new(:name => 'TEST01E', :ensure => :present) }.should_not raise_error
50-
proc { described_class.new(:name => 'MY_FANCY_DB', :ensure => :present) }.should_not raise_error
43+
expect { described_class.new(:name => 'TEST01E', :ensure => :present) }.to_not raise_error
44+
expect { described_class.new(:name => 'MY_FANCY_DB', :ensure => :present) }.to_not raise_error
5145
end
5246

5347
it "should not support whitespace" do
54-
proc { described_class.new(:name => 'TEST 01E', :ensure => :present) }.should raise_error(Puppet::Error, /Name.*whitespace/)
55-
proc { described_class.new(:name => 'TEST01E ', :ensure => :present) }.should raise_error(Puppet::Error, /Name.*whitespace/)
56-
proc { described_class.new(:name => ' TEST01E', :ensure => :present) }.should raise_error(Puppet::Error, /Name.*whitespace/)
57-
proc { described_class.new(:name => "TEST\t01E", :ensure => :present) }.should raise_error(Puppet::Error, /Name.*whitespace/)
48+
expect { described_class.new(:name => 'TEST 01E', :ensure => :present) }.to raise_error(Puppet::Error, /Name.*whitespace/)
49+
expect { described_class.new(:name => 'TEST01E ', :ensure => :present) }.to raise_error(Puppet::Error, /Name.*whitespace/)
50+
expect { described_class.new(:name => ' TEST01E', :ensure => :present) }.to raise_error(Puppet::Error, /Name.*whitespace/)
51+
expect { described_class.new(:name => "TEST\t01E", :ensure => :present) }.to raise_error(Puppet::Error, /Name.*whitespace/)
5852
end
5953

6054
it "should not support an empty name" do
61-
proc { described_class.new(:name => '', :ensure => :present) }.should raise_error(Puppet::Error, /Name.*empty/)
55+
expect { described_class.new(:name => '', :ensure => :present) }.to raise_error(Puppet::Error, /Name.*empty/)
6256
end
6357
end
6458

6559
describe "for home" do
6660
it "should support an absolute path" do
67-
proc { described_class.new(:name => 'TEST01E', :home => '/my/home', :ensure => :present) }.should_not raise_error
68-
proc { described_class.new(:name => 'TEST01E', :home => '/my/fancy path', :ensure => :present) }.should_not raise_error
61+
expect { described_class.new(:name => 'TEST01E', :home => '/my/home', :ensure => :present) }.to_not raise_error
62+
expect { described_class.new(:name => 'TEST01E', :home => '/my/fancy path', :ensure => :present) }.to_not raise_error
6963
end
7064
it "should not support a relative path" do
71-
proc { described_class.new(:name => 'TEST01E', :home => './my/home', :ensure => :present) }.should raise_error(Puppet::Error, /Home must be an absolute path/)
72-
proc { described_class.new(:name => 'TEST01E', :home => 'my/home', :ensure => :present) }.should raise_error(Puppet::Error, /Home must be an absolute path/)
65+
expect { described_class.new(:name => 'TEST01E', :home => './my/home', :ensure => :present) }.to raise_error(Puppet::Error, /Home must be an absolute path/)
66+
expect { described_class.new(:name => 'TEST01E', :home => 'my/home', :ensure => :present) }.to raise_error(Puppet::Error, /Home must be an absolute path/)
7367
end
7468
end
7569

7670
describe "for atboot" do
7771
it "should support yes" do
78-
proc { described_class.new(:name => 'TEST01E', :atboot => :yes) }.should_not raise_error
72+
expect { described_class.new(:name => 'TEST01E', :atboot => :yes) }.to_not raise_error
7973
end
8074

8175
it "should support no" do
82-
proc { described_class.new(:name => 'TEST01E', :atboot => :no) }.should_not raise_error
76+
expect { described_class.new(:name => 'TEST01E', :atboot => :no) }.to_not raise_error
8377
end
8478
it "should support Y" do
85-
proc { described_class.new(:name => 'TEST01E', :atboot => :Y) }.should_not raise_error
79+
expect { described_class.new(:name => 'TEST01E', :atboot => :Y) }.to_not raise_error
8680
end
8781
it "should support N" do
88-
proc { described_class.new(:name => 'TEST01E', :atboot => :N) }.should_not raise_error
82+
expect { described_class.new(:name => 'TEST01E', :atboot => :N) }.to_not raise_error
8983
end
9084
it "should alias Y to yes" do
9185
described_class.new(:name => 'TEST01E', :atboot => :Y)[:atboot].should == :yes
@@ -94,16 +88,15 @@
9488
described_class.new(:name => 'TEST01E', :atboot => :N)[:atboot].should == :no
9589
end
9690
it "should not support other values" do
97-
proc { described_class.new(:name => 'TEST01E', :atboot => :yess) }.should raise_error(Puppet::Error, /Invalid value/)
91+
expect { described_class.new(:name => 'TEST01E', :atboot => :yess) }.to raise_error(Puppet::Error, /Invalid value/)
9892
end
9993
end
10094

10195
describe "for description" do
10296
it "should support a valid description" do
103-
proc { described_class.new(:name => 'TEST01E', :description => 'added by agent install') }.should_not raise_error
97+
expect { described_class.new(:name => 'TEST01E', :description => 'added by agent install') }.to_not raise_error
10498
end
10599
end
106100

107101
end
108102
end
109-

0 commit comments

Comments
 (0)