[#33 state:resolved] refactored to move the config down to Webrat::Core as it seemed nicer

This commit is contained in:
gaffo 2008-11-14 00:11:29 -06:00
parent 3fbf5ae930
commit 58cbf49119
7 changed files with 74 additions and 69 deletions

View File

@ -1,4 +1,3 @@
require "webrat/core/configuration"
require "webrat/core/xml" require "webrat/core/xml"
require "webrat/core/nokogiri" require "webrat/core/nokogiri"
require "webrat/core/logging" require "webrat/core/logging"
@ -12,3 +11,39 @@ require "webrat/core/select_option"
require "webrat/core/session" require "webrat/core/session"
require "webrat/core/methods" require "webrat/core/methods"
require "webrat/core/matchers" require "webrat/core/matchers"
module Webrat
class Core
# Configures Webrat. If this is not done, Webrat will be created
# with all of the default settings.
# Example:
# Webrat::Core.configure do |config|
# config.open_error_files = false
# end
def self.configure(configuration = Core.new)
yield configuration if block_given?
@@configuration = configuration
end
def self.configuration
@@configuration = Core.new unless @@configuration
@@configuration
end
# Sets whether to save and open pages with error status codes in a browser
attr_accessor :open_error_files
def initialize
self.open_error_files = default_open_error_files
end
private
@@configuration = nil
def default_open_error_files
true
end
end
end

View File

@ -1,33 +0,0 @@
module Webrat
module Core
class Configuration
# Configures Webrat. If this is not done, Webrat will be created
# with all of the default settings.
def self.configure(configuration = Webrat::Core::Configuration.new)
yield configuration if block_given?
@@configuration = configuration
end
def self.configuration
@@configuration = Webrat::Core::Configuration.new unless @@configuration
@@configuration
end
# Sets whether to save and open pages with error status codes in a browser
attr_accessor :open_error_files
def initialize
self.open_error_files = default_open_error_files
end
private
@@configuration = nil
def default_open_error_files
true
end
end
end
end

View File

@ -86,7 +86,7 @@ module Webrat
send "#{http_method}", url, data || {}, h send "#{http_method}", url, data || {}, h
end end
save_and_open_page if exception_caught? && !Webrat::Core::Configuration.configuration.open_error_files save_and_open_page if exception_caught? && Webrat::Core.configuration.open_error_files
raise PageLoadError.new("Page load was not successful (Code: #{response_code.inspect}):\n#{formatted_error}") unless success_code? raise PageLoadError.new("Page load was not successful (Code: #{response_code.inspect}):\n#{formatted_error}") unless success_code?
@_scopes = nil @_scopes = nil

View File

@ -12,11 +12,11 @@ Spec::Runner.configure do |config|
end end
class Webrat::Core::Configuration class Webrat::Core
@@previous_config = nil @@previous_config = nil
def self.cache_config_for_test def self.cache_config_for_test
@@configuration = Webrat::Core::Configuration.configuration @@configuration = Webrat::Core.configuration
end end
def self.reset_for_test def self.reset_for_test

View File

@ -1,30 +0,0 @@
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
describe Webrat::Core::Configuration do
before do
Webrat::Core::Configuration.cache_config_for_test
end
after do
Webrat::Core::Configuration.reset_for_test
end
it "should have a default config" do
Webrat::Core::Configuration.configuration.should be_an_instance_of(Webrat::Core::Configuration)
end
it "should set default values" do
config = Webrat::Core::Configuration.configuration
config.open_error_files.should == true
end
it "should be configurable with a block" do
Webrat::Core::Configuration.configure do |config|
config.open_error_files = false
end
config = Webrat::Core::Configuration.configuration
config.open_error_files.should == false
end
end

View File

@ -87,11 +87,11 @@ describe Webrat::Session do
describe "#request_page" do describe "#request_page" do
before(:each) do before(:each) do
Webrat::Core::Configuration.cache_config_for_test Webrat::Core.cache_config_for_test
@session = Webrat::Session.new @session = Webrat::Session.new
end end
after(:each) do after(:each) do
Webrat::Core::Configuration.reset_for_test Webrat::Core.reset_for_test
end end
it "should raise an error if the request is not a success" do it "should raise an error if the request is not a success" do
@ -105,6 +105,9 @@ describe Webrat::Session do
end end
it "should raise an error but not open if the request is not a success and config quashes save_and_open" do it "should raise an error but not open if the request is not a success and config quashes save_and_open" do
Webrat::Core.configure do |config|
config.open_error_files = false
end
@session.stub!(:get) @session.stub!(:get)
@session.stub!(:response_body).and_return("Exception caught") @session.stub!(:response_body).and_return("Exception caught")
@session.stub!(:response_code).and_return(500) @session.stub!(:response_code).and_return(500)

30
spec/webrat/core_spec.rb Executable file
View File

@ -0,0 +1,30 @@
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
describe Webrat::Core do
before do
Webrat::Core.cache_config_for_test
end
after do
Webrat::Core.reset_for_test
end
it "should have a default config" do
Webrat::Core.configuration.should be_an_instance_of(Webrat::Core)
end
it "should set default values" do
config = Webrat::Core.configuration
config.open_error_files.should == true
end
it "should be configurable with a block" do
Webrat::Core.configure do |config|
config.open_error_files = false
end
config = Webrat::Core.configuration
config.open_error_files.should == false
end
end