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

Commit feeff9ef by Mick Hansen

Merge pull request #4888 from alexschneider/fix-es6-imports

Fix #4881 and add tests for es6 imports
2 parents 8d752082 7c40faae
# Future
- [FIXED] Add support for Babel/ES6 imports [#4881](https://github.com/sequelize/sequelize/issues/4881)
# 3.14.2
- [FIXED] Model.aggregate methods now support attributes and where conditions with fields. [#4935](https://github.com/sequelize/sequelize/issues/4935)
- [FIXED] Don't overwrite options.foreignKey in associations [#4927](https://github.com/sequelize/sequelize/pull/4927)
......
......@@ -638,6 +638,10 @@ Sequelize.prototype.import = function(path) {
if (!this.importCache[path]) {
var defineCall = (arguments.length > 1 ? arguments[1] : require(path));
if (typeof defineCall === 'object' && defineCall.__esModule) {
// Babel/ES6 module compatability
defineCall = defineCall['default'];
}
this.importCache[path] = defineCall(this, DataTypes);
}
......
......@@ -49,6 +49,8 @@
"wkx": "0.1.0"
},
"devDependencies": {
"babel-core": "^6.2.0",
"babel-preset-es2015": "^6.1.18",
"chai": "^3.0.0",
"chai-as-promised": "^5.1.0",
"chai-datetime": "^1.4.0",
......
export default function(sequelize, DataTypes) {
return sequelize.define('Project' + parseInt(Math.random() * 9999999999999999), {
name: DataTypes.STRING
});
};
......@@ -14,6 +14,8 @@ var chai = require('chai')
, moment = require('moment')
, Transaction = require(__dirname + '/../../lib/transaction')
, sinon = require('sinon')
, babel = require('babel-core')
, fs = require('fs')
, current = Support.sequelize;
......@@ -1132,8 +1134,21 @@ describe(Support.getTestDialectTeaser('Sequelize'), function() {
describe('import', function() {
it('imports a dao definition from a file absolute path', function() {
var Project = this.sequelize.import(__dirname + '/assets/project');
expect(Project).to.exist;
});
it('imports a dao definition from a file compiled with babel', function () {
var es6project = babel.transformFileSync(__dirname + '/assets/es6project.es6', {
presets: ['es2015']
}).code;
fs.writeFileSync(__dirname + '/assets/es6project.js', es6project);
var Project = this.sequelize.import(__dirname + '/assets/es6project');
expect(Project).to.exist;
});
after(function(){
fs.unlink(__dirname + '/assets/es6project.js');
});
it('imports a dao definition from a function', function() {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!