不要怂,就是干,撸起袖子干!

Commit c7cd93f4 by Jan Aagaard Meier

Merge pull request #733 from durango/no-speak-engrish

Cleaned up configuration.spec.js and made Sequelize throw an error for a dialect that doesn't exist. Closes #729.
2 parents bfb44bcb f35de7cb
...@@ -102,7 +102,11 @@ module.exports = (function() { ...@@ -102,7 +102,11 @@ module.exports = (function() {
maxConcurrentQueries: this.options.maxConcurrentQueries maxConcurrentQueries: this.options.maxConcurrentQueries
} }
var ConnectorManager = require("./dialects/" + this.options.dialect + "/connector-manager") try {
var ConnectorManager = require("./dialects/" + this.options.dialect + "/connector-manager")
} catch(err) {
throw new Error("The dialect " + this.options.dialect + " is not supported.")
}
this.daoFactoryManager = new DAOFactoryManager(this) this.daoFactoryManager = new DAOFactoryManager(this)
this.connectorManager = new ConnectorManager(this, this.config) this.connectorManager = new ConnectorManager(this, this.config)
......
...@@ -50,7 +50,8 @@ ...@@ -50,7 +50,8 @@
"pg": "~2.0.0", "pg": "~2.0.0",
"buster": "~0.6.3", "buster": "~0.6.3",
"watchr": "~2.2.0", "watchr": "~2.2.0",
"yuidocjs": "~0.3.36" "yuidocjs": "~0.3.36",
"semver": "~2.0.8"
}, },
"keywords": [ "keywords": [
"mysql", "mysql",
......
if(typeof require === 'function') { if(typeof require === 'function') {
const buster = require("buster") const buster = require("buster")
, semver = require("semver")
, CustomEventEmitter = require("../lib/emitters/custom-event-emitter") , CustomEventEmitter = require("../lib/emitters/custom-event-emitter")
, Helpers = require('./buster-helpers') , Helpers = require('./buster-helpers')
, config = require(__dirname + "/config/config") , config = require(__dirname + "/config/config")
...@@ -10,27 +11,22 @@ buster.spec.expose() ...@@ -10,27 +11,22 @@ buster.spec.expose()
buster.testRunner.timeout = 1000 buster.testRunner.timeout = 1000
var Sequelize = require(__dirname + '/../index') var Sequelize = require(__dirname + '/../index')
, noDomains = semver.lt(process.version, '0.8.0')
describe(Helpers.getTestDialectTeaser("Configuration"), function() { describe(Helpers.getTestDialectTeaser("Configuration"), function() {
describe('Connections problems should fail with a nice message', function() { describe('Connections problems should fail with a nice message', function() {
it('should give us an error for not having the correct server details', function(done) { it('when we don\'t have the correct server details', function(done) {
var domain if (noDomains === true) {
console.log('WARNING: Configuration specs requires NodeJS version >= 0.8 for full compatibility')
try {
domain = require('domain')
} catch (err) {
console.log('WARNING: Configuration specs requires Node version >= 0.8')
expect('').toEqual('') // Silence Buster! expect('').toEqual('') // Silence Buster!
done() return done()
} }
var d = domain.create()
var sequelize = new Sequelize(config[dialect].database, config[dialect].username, config[dialect].password, {storage: '/path/to/no/where/land', logging: false, host: '0.0.0.1', port: config[dialect].port, dialect: dialect}) var sequelize = new Sequelize(config[dialect].database, config[dialect].username, config[dialect].password, {storage: '/path/to/no/where/land', logging: false, host: '0.0.0.1', port: config[dialect].port, dialect: dialect})
d.add(sequelize.query) , domain = require('domain')
, d = domain.create()
d.on('error', function(err){ d.on('error', function(err){
d.remove(sequelize.query)
var msg = 'Failed to find SQL server. Please double check your settings.' var msg = 'Failed to find SQL server. Please double check your settings.'
if (dialect === "postgres" || dialect === "postgres-native") { if (dialect === "postgres" || dialect === "postgres-native") {
msg = 'Failed to find PostgresSQL server. Please double check your settings.' msg = 'Failed to find PostgresSQL server. Please double check your settings.'
...@@ -40,39 +36,35 @@ describe(Helpers.getTestDialectTeaser("Configuration"), function() { ...@@ -40,39 +36,35 @@ describe(Helpers.getTestDialectTeaser("Configuration"), function() {
} }
expect(err.message).toEqual(msg) expect(err.message).toEqual(msg)
d.remove(sequelize.query)
done() done()
}) })
d.run(function(){ d.run(function(){
d.add(sequelize.query)
sequelize.query('select 1 as hello') sequelize.query('select 1 as hello')
.success(function(){}) .success(function(){})
}) })
}) })
it('should give us an error for not having the correct login information', function(done) { it('when we don\'t have the correct login information', function(done) {
if (dialect !== "postgres" && dialect !== "postgres-native" && dialect !== "mysql") { if (dialect !== "postgres" && dialect !== "postgres-native" && dialect !== "mysql") {
// This dialect doesn't support incorrect login information console.log('This dialect doesn\'t support me :(')
expect('').toEqual('') // Silence Buster expect('').toEqual('') // Silence Buster
return done() return done()
} }
var domain if (noDomains === true) {
console.log('WARNING: Configuration specs requires NodeJS version >= 0.8 for full compatibility')
try {
domain = require('domain')
} catch (err) {
console.log('WARNING: Configuration specs requires Node version >= 0.8')
expect('').toEqual('') // Silence Buster! expect('').toEqual('') // Silence Buster!
done() return done()
} }
var d = domain.create()
var sequelize = new Sequelize(config[dialect].database, config[dialect].username, 'fakepass123', {logging: false, host: config[dialect].host, port: 1, dialect: dialect}) var sequelize = new Sequelize(config[dialect].database, config[dialect].username, 'fakepass123', {logging: false, host: config[dialect].host, port: 1, dialect: dialect})
d.add(sequelize.query) , domain = require('domain')
, d = domain.create()
d.on('error', function(err){ d.on('error', function(err){
d.remove(sequelize.query)
var msg = 'Failed to authenticate for SQL. Please double check your settings.' var msg = 'Failed to authenticate for SQL. Please double check your settings.'
if (dialect === "postgres" || dialect === "postgres-native") { if (dialect === "postgres" || dialect === "postgres-native") {
msg = 'Failed to authenticate for PostgresSQL. Please double check your settings.' msg = 'Failed to authenticate for PostgresSQL. Please double check your settings.'
...@@ -82,14 +74,22 @@ describe(Helpers.getTestDialectTeaser("Configuration"), function() { ...@@ -82,14 +74,22 @@ describe(Helpers.getTestDialectTeaser("Configuration"), function() {
} }
expect(err.message).toEqual(msg) expect(err.message).toEqual(msg)
d.remove(sequelize.query)
done() done()
}) })
d.run(function(){ d.run(function(){
d.add(sequelize.query)
sequelize.query('select 1 as hello') sequelize.query('select 1 as hello')
.success(function(){}) .success(function(){})
}) })
}) })
it('when we don\'t have a valid dialect.', function() {
Helpers.assertException(function() {
new Sequelize(config[dialect].database, config[dialect].username, config[dialect].password, {host: '0.0.0.1', port: config[dialect].port, dialect: undefined})
}.bind(this), 'The dialect undefined is not supported.')
})
}) })
describe('Instantiation with a URL string', function() { describe('Instantiation with a URL string', function() {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!