From 58cbf49119f87f0fb483b34c26dcb80a800a4c41 Mon Sep 17 00:00:00 2001 From: gaffo Date: Fri, 14 Nov 2008 00:11:29 -0600 Subject: [PATCH] [#33 state:resolved] refactored to move the config down to Webrat::Core as it seemed nicer --- lib/webrat/core.rb | 37 +++++++++++++++++++++++++- lib/webrat/core/configuration.rb | 33 ----------------------- lib/webrat/core/session.rb | 2 +- spec/spec_helper.rb | 4 +-- spec/webrat/core/configuration_spec.rb | 30 --------------------- spec/webrat/core/session_spec.rb | 7 +++-- spec/webrat/core_spec.rb | 30 +++++++++++++++++++++ 7 files changed, 74 insertions(+), 69 deletions(-) delete mode 100755 spec/webrat/core/configuration_spec.rb create mode 100755 spec/webrat/core_spec.rb diff --git a/lib/webrat/core.rb b/lib/webrat/core.rb index 3cdedbf9..25195cf7 100644 --- a/lib/webrat/core.rb +++ b/lib/webrat/core.rb @@ -1,4 +1,3 @@ -require "webrat/core/configuration" require "webrat/core/xml" require "webrat/core/nokogiri" require "webrat/core/logging" @@ -12,3 +11,39 @@ 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 722fc14b..e69de29b 100755 --- a/lib/webrat/core/configuration.rb +++ b/lib/webrat/core/configuration.rb @@ -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 \ No newline at end of file diff --git a/lib/webrat/core/session.rb b/lib/webrat/core/session.rb index bbc71ec3..8d796e2b 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.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? @_scopes = nil diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index be1c2294..e81f269e 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -12,11 +12,11 @@ end -class Webrat::Core::Configuration +class Webrat::Core @@previous_config = nil def self.cache_config_for_test - @@configuration = Webrat::Core::Configuration.configuration + @@configuration = Webrat::Core.configuration end def self.reset_for_test diff --git a/spec/webrat/core/configuration_spec.rb b/spec/webrat/core/configuration_spec.rb deleted file mode 100755 index d98bd041..00000000 --- a/spec/webrat/core/configuration_spec.rb +++ /dev/null @@ -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 \ No newline at end of file diff --git a/spec/webrat/core/session_spec.rb b/spec/webrat/core/session_spec.rb index 6d3b5e3c..5d8564e0 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::Configuration.cache_config_for_test + Webrat::Core.cache_config_for_test @session = Webrat::Session.new end after(:each) do - Webrat::Core::Configuration.reset_for_test + Webrat::Core.reset_for_test end it "should raise an error if the request is not a success" do @@ -105,6 +105,9 @@ 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 new file mode 100755 index 00000000..47b7142c --- /dev/null +++ b/spec/webrat/core_spec.rb @@ -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 \ No newline at end of file