diff --git a/lib/webrat/core.rb b/lib/webrat/core.rb index 25195cf7..3cdedbf9 100644 --- a/lib/webrat/core.rb +++ b/lib/webrat/core.rb @@ -1,3 +1,4 @@ +require "webrat/core/configuration" require "webrat/core/xml" require "webrat/core/nokogiri" require "webrat/core/logging" @@ -11,39 +12,3 @@ require "webrat/core/session" require "webrat/core/methods" 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 \ No newline at end of file diff --git a/lib/webrat/core/configuration.rb b/lib/webrat/core/configuration.rb index e69de29b..722fc14b 100755 --- a/lib/webrat/core/configuration.rb +++ b/lib/webrat/core/configuration.rb @@ -0,0 +1,33 @@ +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 \ No newline at end of file diff --git a/lib/webrat/core/session.rb b/lib/webrat/core/session.rb index 8d796e2b..bbc71ec3 100644 --- a/lib/webrat/core/session.rb +++ b/lib/webrat/core/session.rb @@ -86,7 +86,7 @@ def request_page(url, http_method, data) #:nodoc: send "#{http_method}", url, data || {}, h end - save_and_open_page if exception_caught? && Webrat::Core.configuration.open_error_files + save_and_open_page if exception_caught? && !Webrat::Core::Configuration.configuration.open_error_files raise PageLoadError.new("Page load was not successful (Code: #{response_code.inspect}):\n#{formatted_error}") unless success_code? @_scopes = nil diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index e81f269e..be1c2294 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -12,11 +12,11 @@ end -class Webrat::Core +class Webrat::Core::Configuration @@previous_config = nil def self.cache_config_for_test - @@configuration = Webrat::Core.configuration + @@configuration = Webrat::Core::Configuration.configuration end def self.reset_for_test diff --git a/spec/webrat/core/configuration_spec.rb b/spec/webrat/core/configuration_spec.rb new file mode 100755 index 00000000..d98bd041 --- /dev/null +++ b/spec/webrat/core/configuration_spec.rb @@ -0,0 +1,30 @@ +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 \ No newline at end of file diff --git a/spec/webrat/core/session_spec.rb b/spec/webrat/core/session_spec.rb index 5d8564e0..6d3b5e3c 100644 --- a/spec/webrat/core/session_spec.rb +++ b/spec/webrat/core/session_spec.rb @@ -87,11 +87,11 @@ def session.response_body describe "#request_page" do before(:each) do - Webrat::Core.cache_config_for_test + Webrat::Core::Configuration.cache_config_for_test @session = Webrat::Session.new end after(:each) do - Webrat::Core.reset_for_test + Webrat::Core::Configuration.reset_for_test end it "should raise an error if the request is not a success" do @@ -105,9 +105,6 @@ def session.response_body end 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!(:response_body).and_return("Exception caught") @session.stub!(:response_code).and_return(500) diff --git a/spec/webrat/core_spec.rb b/spec/webrat/core_spec.rb deleted file mode 100755 index 47b7142c..00000000 --- a/spec/webrat/core_spec.rb +++ /dev/null @@ -1,30 +0,0 @@ -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 \ No newline at end of file