spec/spec_helper.rb in dm-constraints-0.9.11 vs spec/spec_helper.rb in dm-constraints-0.10.0

- old
+ new

@@ -1,25 +1,63 @@ -require 'pathname' require 'rubygems' -gem 'rspec', '~>1.2' -require 'spec' - -gem 'dm-core', '0.9.11' +# use local dm-core if running from a typical dev checkout. +lib = File.join('..', '..', 'dm-core', 'lib') +$LOAD_PATH.unshift(lib) if File.directory?(lib) require 'dm-core' -ADAPTERS = [] +# Support running specs with 'rake spec' and 'spec' +$LOAD_PATH.unshift('lib') unless $LOAD_PATH.include?('lib') + +require 'dm-constraints' + +ADAPTERS = {} def load_driver(name, default_uri) + connection_string = ENV["#{name.to_s.upcase}_SPEC_URI"] || default_uri begin - DataMapper.setup(name, ENV["#{name.to_s.upcase}_SPEC_URI"] || default_uri) - DataMapper::Repository.adapters[:default] = DataMapper::Repository.adapters[name] - ADAPTERS << name + adapter = DataMapper.setup(name.to_sym, connection_string) + + # test the connection if possible + if adapter.respond_to?(:query) + adapter.query('SELECT 1') + end + + ADAPTERS[name] = connection_string rescue LoadError => e warn "Could not load do_#{name}: #{e}" false end end -load_driver(:postgres, 'postgres://postgres@localhost/dm_core_test') -load_driver(:mysql, 'mysql://localhost/dm_core_test') -require Pathname(__FILE__).dirname.expand_path.parent + 'lib/dm-constraints' +HAS_SQLITE3 = load_driver(:sqlite3, 'sqlite3::memory:') +HAS_MYSQL = load_driver(:mysql, 'mysql://localhost/dm_core_test') +HAS_POSTGRES = load_driver(:postgres, 'postgres://postgres@localhost/dm_core_test') + + +Spec::Runner.configure do |config| + config.after :all do + # global model cleanup + descendants = DataMapper::Model.descendants.to_a + while model = descendants.shift + descendants.concat(model.descendants.to_a - [ model ]) + + parts = model.name.split('::') + constant_name = parts.pop.to_sym + base = parts.empty? ? Object : Object.full_const_get(parts.join('::')) + + if base.const_defined?(constant_name) + base.send(:remove_const, constant_name) + end + + DataMapper::Model.descendants.delete(model) + end + end + + config.before do + DataMapper.auto_migrate! + end + + config.after do + DataMapper.send(:auto_migrate_down!, @repository.name) + end +end