lib/taza/settings.rb in bret-watircraft-0.4.3 vs lib/taza/settings.rb in bret-watircraft-0.4.4
- old
+ new
@@ -1,80 +1,104 @@
require 'activesupport'
module Taza
class Settings
- # The config settings from the site.yml and config.yml files.
- # ENV variables will override the settings.
- #
- # Example:
- # Taza::Settings.config('google')
- def self.config(site_name=nil)
- env_settings = {}
- keys = %w(browser driver timeout server_ip server_port)
- keys.each do |key|
- env_settings[key.to_sym] = ENV[key.upcase] if ENV[key.upcase]
+ class << self
+ # The config settings from the site.yml and config.yml files.
+ # ENV variables will override the settings.
+ #
+ # Example:
+ # Taza::Settings.config('google')
+ def config(site_name=nil)
+ keys = %w(browser driver timeout server_ip server_port visible speed attach leave_open bring_to_front)
+ default_settings = {
+ :browser => 'firefox',
+ :driver => 'watir',
+ :visible => true,
+ :speed => 'fast',
+ :attach => false,
+ :bring_to_front => false,
+ :leave_open => false,
+ }
+
+ env_settings = {}
+ keys.each do |key|
+ env_settings[key.to_sym] = ENV[key.upcase] if ENV[key.upcase]
+ end
+
+ # Because of the way #merge works, the settings at the bottom of the list
+ # trump those at the top.
+ settings = environment_settings.merge(
+ default_settings.merge(
+ config_file.merge(
+ env_settings)))
+
+ settings[:browser] = settings[:browser].to_s
+ settings[:driver] = settings[:driver].to_s
+ settings[:speed] = settings[:speed].to_sym
+ settings[:visible] = to_bool(settings[:visible])
+ settings[:leave_open] = to_bool(settings[:leave_open])
+ settings[:attach] = to_bool(settings[:attach])
+ settings[:bring_to_front] = to_bool(settings[:bring_to_front])
+ settings
end
+
+ # Returns a hash corresponding to the project config file.
+ def config_file
+ if File.exists?(config_file_path)
+ hash = YAML.load_file(config_file_path)
+ else
+ hash = {}
+ end
+ convert_string_keys_to_symbols hash
+ end
+
+ def config_file_path # :nodoc:
+ File.join(path, 'config', 'config.yml')
+ end
- default_settings = {:browser => :firefox, :driver => :watir}
+ # Returns a hash for the currently specified test environment
+ def environment_settings # :nodoc:
+ file = File.join(path, environment_file)
+ hash_of_hashes = YAML.load_file(file)
+ unless hash_of_hashes.has_key? environment
+ raise "Environment #{environment} not found in #{file}"
+ end
+ convert_string_keys_to_symbols hash_of_hashes[environment]
+ end
- # Because of the way #merge works, the settings at the bottom of the list
- # trump those at the top.
- settings = environment_settings.merge(
- default_settings.merge(
- config_file.merge(
- env_settings)))
-
- settings[:browser] = settings[:browser].to_sym
- settings[:driver] = settings[:driver].to_sym
- settings
- end
-
- # Returns a hash corresponding to the project config file.
- def self.config_file
- if File.exists?(config_file_path)
- hash = YAML.load_file(config_file_path)
- else
- hash = {}
+ @@root = nil
+
+ def path # :nodoc:
+ @@root || APP_ROOT
end
- self.convert_string_keys_to_symbols hash
- end
-
- def self.config_file_path # :nodoc:
- File.join(path, 'config', 'config.yml')
- end
-
- # Returns a hash for the currently specified test environment
- def self.environment_settings # :nodoc:
- file = File.join(path, environment_file)
- hash_of_hashes = YAML.load_file(file)
- unless hash_of_hashes.has_key? environment
- raise "Environment #{environment} not found in #{file}"
+
+ def path= path
+ @@root = path
end
- convert_string_keys_to_symbols hash_of_hashes[environment]
- end
-
- @@root = nil
-
- def self.path # :nodoc:
- @@root || APP_ROOT
- end
-
- def self.path= path
- @@root = path
- end
-
- def self.environment
- ENV['ENVIRONMENT'] || 'test'
- end
-
- def self.convert_string_keys_to_symbols hash
- returning Hash.new do |new_hash|
- hash.each_pair {|k, v| new_hash[k.to_sym] = v}
+
+ def environment
+ ENV['ENVIRONMENT'] || 'test'
end
- end
-
- private
- def self.environment_file
- 'config/environments.yml'
+
+ def convert_string_keys_to_symbols hash
+ returning Hash.new do |new_hash|
+ hash.each_pair {|k, v| new_hash[k.to_sym] = v}
+ end
+ end
+
+ def to_bool value
+ case value
+ when true, /true/i
+ true
+ else
+ false
+ end
+ end
+
+ private
+ def environment_file
+ 'config/environments.yml'
+ end
end
end
end