src/sequelize.js
function Sequelize(database, username, password, options) {
	if(typeof database == 'object') {
		options = database;
	} else if (typeof username == 'object') {
		options = username;
	} else if (typeof password == 'object') {
		options = password;
	}
	
	this.queryInterface = new QueryInterface( _.pick(options || {}, ['stopPropagation']) );
	
	/**
	 * Options passed into the Sequelize initialization
	 * 
	 * @member Sequelize
	 * @property
	 **/
	this.options = _.extend({
		dialect: 'mock',
	}, options || {});
	
	/**
	 * Used to cache and override model imports for easy mock model importing
	 * 
	 * @member Sequelize
	 * @property
	 **/
	this.importCache = {};
	
	/**
	 * Models that have been defined in this Sequelize Mock instances
	 * 
	 * @member Sequelize
	 * @property
	 **/
	this.models = {};
}
function Sequelize(database, username, password, options) {
	if(typeof database == 'object') {
		options = database;
	} else if (typeof username == 'object') {
		options = username;
	} else if (typeof password == 'object') {
		options = password;
	}
	
	this.queryInterface = new QueryInterface( _.pick(options || {}, ['stopPropagation']) );
	
	/**
	 * Options passed into the Sequelize initialization
	 * 
	 * @member Sequelize
	 * @property
	 **/
	this.options = _.extend({
		dialect: 'mock',
	}, options || {});
	
	/**
	 * Used to cache and override model imports for easy mock model importing
	 * 
	 * @member Sequelize
	 * @property
	 **/
	this.importCache = {};
	
	/**
	 * Models that have been defined in this Sequelize Mock instances
	 * 
	 * @member Sequelize
	 * @property
	 **/
	this.models = {};
}
function Sequelize ( database , username , password , options ) { if ( typeof database == 'object' ) { options = database ; } else if ( typeof username == 'object' ) { options = username ; } else if ( typeof password == 'object' ) { options = password ; } this . queryInterface = new QueryInterface ( _ . pick ( options || { } , [ 'stopPropagation' ] ) ) ; /**
	 * Options passed into the Sequelize initialization
	 * 
	 * @member Sequelize
	 * @property
	 **/ this . options = _ . extend ( { dialect : 'mock' , } , options || { } ) ; /**
	 * Used to cache and override model imports for easy mock model importing
	 * 
	 * @member Sequelize
	 * @property
	 **/ this . importCache = { } ; /**
	 * Models that have been defined in this Sequelize Mock instances
	 * 
	 * @member Sequelize
	 * @property
	 **/ this . models = { } ; }
Sequelize Mock Object. This can be initialize much the same way that Sequelize itself
is initialized. Any configuration or options is ignored, so it can be used as a drop-in
replacement for Sequelize but does not have all the same functionality or features.

@class Sequelize
@constructor
@param {String} [database] Ignored for Mock objects, supported to match Sequelize
@param {String} [username] Ignored for Mock objects, supported to match Sequelize
@param {String} [password] Ignored for Mock objects, supported to match Sequelize
@param {String} [options] Options object. Most default Sequelize options are ignored unless listed below. All, however, are available by accessing `sequelize.options`
@param {String} [options.dialect='mock'] Dialect that the system will use. Avaible to be returned by `getDialect()` but has no other effect
@param {Boolean} [options.autoQueryFallback] Flag inherited by defined Models indicating if we should try and generate results based on the query automatically
@param {Boolean} [options.stopPropagation] Flag inherited by defined Models indicating if we should not propagate to the parent
Sequelize Mock Object . This can be initialize much the same way that Sequelize itself is initialized . Any configuration or options is ignored so it can be used as a drop - in replacement for Sequelize but does not have all the same functionality or features .