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

basics.js 2.39 KB
var Sequelize = require(__dirname + "/../../lib/sequelize/Sequelize").Sequelize
  , config    = require(__dirname + '/../config')
  , s         = new Sequelize(config.database, config.username, config.password, {disableLogging: true})
  , Day       = s.define('Day', { name: Sequelize.TEXT })
  , assert    = require("assert")

module.exports = {
  'constructor': function() {
    assert.eql(Day.associations, [])
    assert.eql(Day.attributes, {"name": {type: "TEXT"},"createdAt": {type: "DATETIME", allowNull: false},"updatedAt": {type: "DATETIME", allowNull: false}})
    assert.eql(Day.tableName, 'Days')
  },
  'new': function() {
    var day = new Day({name: 'asd'})
    assert.isNull(day.id)
    assert.eql(day.table, Day)
    assert.eql(day.name, 'asd')
    assert.isUndefined(new Day({name: 'asd', bla: 'foo'}).bla)
  },
  'sync should return the table class': function(beforeExit) {
    var toBeTested = null
    Day.sync(function(_Day) { toBeTested = _Day })
    beforeExit(function() { assert.eql(toBeTested, Day) })
  },
  'drop should return the table class': function(beforeExit) {
    var toBeTested = null
    Day.drop(function(_Day) { toBeTested = _Day })
    beforeExit(function() { assert.eql(toBeTested, Day) })
  },
  'sqlResultToObject returns the correct object': function() {
    var SqlResultToObjectTest = s.define('SqlResultToObject', {name: Sequelize.STRING})
    var toBeTested = SqlResultToObjectTest.sqlResultToObject({
      id: 1,
      name: 'foo'
    })
    assert.equal(toBeTested instanceof SqlResultToObjectTest, true)
    assert.equal(toBeTested.id, 1)
    assert.equal(toBeTested.name, 'foo')
  },
  'identifier': function() {
    assert.equal(s.define('Identifier', {}).identifier, 'identifierId')
  },
  'values': function() {
    var day = new Day({name: 's'})
    assert.eql(day.values, { name: "s", createdAt: null, updatedAt: null})
  },
  'default values': function() {
    var DefaultTest = s.define("DefaultTest", {
      aString: { type: Sequelize.STRING, allowNull: false, default: 'woot'},
      aNumber: { type: Sequelize.INTEGER, allowNull: true},
      aBoolean: { type: Sequelize.BOOLEAN, allowNull: false, default: false},
      aText: { type: Sequelize.TEXT, allowNull: true }
    }),
    instance = new DefaultTest({})

    assert.eql(instance.aString, 'woot')
    assert.isUndefined(instance.aNumber)
    assert.eql(instance.aBoolean, false)
    assert.isUndefined(instance.aText)
  }
}