These were using fake objects when that's not really necessary, so replace them
with real ones. Additionally, many of these specs were doing the same thing
(like creating a resource), so that has been extracted to the before block.

Reviewed-By: Jacob Helwig <[email protected]>
Signed-off-by: Nick Lewis <[email protected]>
---
Local-branch: ticket/master/8272
 spec/unit/provider/service/windows_spec.rb |   90 ++++++++++------------------
 1 files changed, 32 insertions(+), 58 deletions(-)

diff --git a/spec/unit/provider/service/windows_spec.rb 
b/spec/unit/provider/service/windows_spec.rb
index fff8750..0667d46 100755
--- a/spec/unit/provider/service/windows_spec.rb
+++ b/spec/unit/provider/service/windows_spec.rb
@@ -5,42 +5,47 @@
 
 require 'spec_helper'
 
-require 'ostruct'
 require 'win32/service' if Puppet.features.microsoft_windows?
 
-provider_class = Puppet::Type.type(:service).provider(:windows)
-
-describe provider_class, :if => Puppet.features.microsoft_windows? do
+describe Puppet::Type.type(:service).provider(:windows), :if => 
Puppet.features.microsoft_windows? do
 
   before :each do
-    @provider = Puppet::Type.type(:service).provider(:windows)
-    Puppet::Type.type(:service).stubs(:provider).returns(@provider)
+    @resource = Puppet::Type.type(:service).new(:name => 'snmptrap', :provider 
=> :windows)
+
+    @config = Struct::ServiceConfigInfo.new
+
+    @status = Struct::ServiceStatus.new
+
+    Win32::Service.stubs(:config_info).with(@resource[:name]).returns(@config)
+    Win32::Service.stubs(:status).with(@resource[:name]).returns(@status)
   end
 
   describe ".instances" do
     it "should enumerate all services" do
-      list_of_services = ['snmptrap', 'svchost', 'sshd'].map {|s| 
OpenStruct.new(:service_name => s)}
+      list_of_services = ['snmptrap', 'svchost', 'sshd'].map { |s| 
stub('service', :service_name => s) }
       Win32::Service.expects(:services).returns(list_of_services)
 
-      provider_class.instances.map {|provider| provider.name}.should =~ 
['snmptrap', 'svchost', 'sshd']
+      described_class.instances.map(&:name).should =~ ['snmptrap', 'svchost', 
'sshd']
     end
   end
 
   describe "#start" do
     it "should call out to the Win32::Service API to start the service" do
+      @config.start_type = 
Win32::Service.get_start_type(Win32::Service::SERVICE_AUTO_START)
+
       Win32::Service.expects(:start).with('snmptrap')
 
-      resource = Puppet::Type.type(:service).new(:name => 'snmptrap')
-      resource.provider.start
+      @resource.provider.start
     end
 
     it "should handle when Win32::Service.start raises a 
Win32::Service::Error" do
+      @config.start_type = 
Win32::Service.get_start_type(Win32::Service::SERVICE_AUTO_START)
+
       Win32::Service.expects(:start).with('snmptrap').raises(
         Win32::Service::Error.new("The service cannot be started, either 
because it is disabled or because it has no enabled devices associated with 
it.")
       )
 
-      resource = Puppet::Type.type(:service).new(:name => 'snmptrap')
-      expect { resource.provider.start }.to raise_error(
+      expect { @resource.provider.start }.to raise_error(
         Puppet::Error,
         /Cannot start snmptrap, error was: The service cannot be started, 
either/
       )
@@ -55,57 +60,32 @@ describe provider_class, :if => 
Puppet.features.microsoft_windows? do
   describe "#status" do
     ['stopped', 'paused', 'stop pending', 'pause pending'].each do |state|
       it "should report a #{state} service as stopped" do
-        Win32::Service.expects(:status).with('snmptrap').returns(
-          stub(
-            'struct_service_status',
-            :instance_of?  => Struct::ServiceStatus,
-            :current_state => state
-          )
-        )
-        resource = Puppet::Type.type(:service).new(:name => 'snmptrap')
-
-        resource.provider.status.should == :stopped
+        @status.current_state = state
+
+        @resource.provider.status.should == :stopped
       end
     end
 
     ["running", "continue pending", "start pending" ].each do |state|
       it "should report a #{state} service as running" do
-        Win32::Service.expects(:status).with('snmptrap').returns(
-          stub(
-            'struct_service_status',
-            :instance_of?  => Struct::ServiceStatus,
-            :current_state => state
-          )
-        )
-        resource = Puppet::Type.type(:service).new(:name => 'snmptrap')
-        resource.provider.status.should == :running
+        @status.current_state = state
+
+        @resource.provider.status.should == :running
       end
     end
   end
 
   describe "#enabled?" do
     it "should report a service with a startup type of manual as manual" do
-      Win32::Service.expects(:config_info).with('snmptrap').returns(
-        stub(
-          'struct_config_info',
-          :instance_of? => Struct::ServiceConfigInfo,
-          :start_type   => 
Win32::Service.get_start_type(Win32::Service::SERVICE_DEMAND_START)
-        )
-      )
-      resource = Puppet::Type.type(:service).new(:name => 'snmptrap')
-      resource.provider.enabled?.should == :manual
+      @config.start_type = 
Win32::Service.get_start_type(Win32::Service::SERVICE_DEMAND_START)
+
+      @resource.provider.enabled?.should == :manual
     end
 
     it "should report a service with a startup type of disabled as false" do
-      Win32::Service.expects(:config_info).with('snmptrap').returns(
-        stub(
-          'struct_config_info',
-          :instance_of? => Struct::ServiceConfigInfo,
-          :start_type   => 
Win32::Service.get_start_type(Win32::Service::SERVICE_DISABLED)
-        )
-      )
-      resource = Puppet::Type.type(:service).new(:name => 'snmptrap')
-      resource.provider.enabled?.should == :false
+      @config.start_type = 
Win32::Service.get_start_type(Win32::Service::SERVICE_DISABLED)
+
+      @resource.provider.enabled?.should == :false
     end
 
     # We need to guard this section explicitly since rspec will always
@@ -114,15 +94,9 @@ describe provider_class, :if => 
Puppet.features.microsoft_windows? do
       [Win32::Service::SERVICE_AUTO_START, Win32::Service::SERVICE_BOOT_START, 
Win32::Service::SERVICE_SYSTEM_START].each do |start_type_const|
         start_type = Win32::Service.get_start_type(start_type_const)
         it "should report a service with a startup type of '#{start_type}' as 
true" do
-          Win32::Service.expects(:config_info).with('snmptrap').returns(
-            stub(
-              'struct_config_info',
-              :instance_of? => Struct::ServiceConfigInfo,
-              :start_type   => start_type
-            )
-          )
-          resource = Puppet::Type.type(:service).new(:name => 'snmptrap')
-          resource.provider.enabled?.should == :true
+          @config.start_type = start_type
+
+          @resource.provider.enabled?.should == :true
         end
       end
     end
-- 
1.7.5.4

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to