spec/spec_helper.rb in exodus-1.1.6 vs spec/spec_helper.rb in exodus-1.1.7

- old
+ new

@@ -1,6 +1,9 @@ require File.dirname(__FILE__) + '/../lib/exodus' +require File.dirname(__FILE__) + '/support/test_class_definition' +include Exodus::Testing + Dir["#{File.dirname(__FILE__)}/support/*.rb"].each { |f| require f } mongo_uri = 'mongodb://exodus:exodus@dharma.mongohq.com:10048/Exodus-test' local_uri = 'mongodb://localhost:27017/Exodus-test' Exodus.configure do |config| @@ -13,5 +16,44 @@ puts e.message, 'Connecting to local db...' config.connection = Mongo::MongoClient.from_uri(local_uri) end end + +module Exodus::Testing + + # Need to create dynamic classes in order to fully test the migration framework + def create_dynamic_class(class_name) + unless Object.const_defined?(class_name.to_sym) + Object.const_set(class_name, Class.new(Exodus::Migration)) + class_name.constantize.class_eval(CLASS_CONTENT["@#{class_name}".to_sym].to_s) + end + end + + def migration_should_be_up(migration) + migration.status.arguments.should be_empty + migration.status.current_status.should == 1 + migration.status.direction.should == 'up' + migration.status.execution_time.should > 0 + migration.status.last_succesful_completion.should_not be nil + end + + def migration_should_be_down(migration) + migration.status.arguments.should be_empty + migration.status.current_status.should == 0 + migration.status.direction.should == 'down' + migration.status.execution_time.should > 0 + end + + def reset_collections(*classes) + classes.each {|c| c.collection.drop} + end + + def instanciate_and_run_up_migrations(*migrations_info) + migrations = migrations_info.map {|klass,arguments| Exodus.instanciate_migration(klass,arguments)} + Exodus.run_migrations('up', migrations) + end + + def get_users_names + UserSupport.all.map(&:name) + end +end