loopback-datasource-juggler/test/hookable_test.coffee

96 lines
2.4 KiB
CoffeeScript

juggling = require('../index')
Schema = juggling.Schema
AbstractClass = juggling.AbstractClass
Hookable = juggling.Hookable
require('./spec_helper').init module.exports
schema = new Schema 'memory'
User = schema.define 'User',
email: String
name: String
password: String
state: String
age: Number
gender: String
domain: String
pendingPeriod: Number
createdByAdmin: Boolean
it "should trigger after initialize", (test) ->
User.afterInitialize = ->
User.afterInitialize = null
test.done()
user = new User
it "should trigger before create", (test) ->
User.beforeCreate = () ->
User.beforeCreate = null
test.done()
User.create -> test.ok "saved"
it "should trigger after create", (test) ->
User.afterCreate = (next) ->
User.afterCreate = null
next()
User.create ->
test.ok "saved"
test.done()
it 'should trigger before save', (test) ->
test.expect(3)
User.beforeSave = (next) ->
User.beforeSave = null
@name = 'mr. ' + @name
next()
user = new User name: 'Jonathan'
user.save ->
test.equals User.schema.adapter.cache.User[user.id].name, user.name
test.equals user.name, 'mr. Jonathan'
test.ok 'saved'
test.done()
it 'should trigger after save', (test) ->
User.afterSave = (next) ->
User.afterSave = null
next()
user = new User
user.save ->
test.ok "saved"
test.done()
it "should trigger before update", (test) ->
User.beforeUpdate = () ->
User.beforeUpdate = null
test.done()
User.create {}, (err, user) ->
user.updateAttributes email:"1@1.com", -> test.ok "updated"
it "should trigger after update", (test) ->
User.afterUpdate = () ->
User.afterUpdate = null
test.done()
User.create (err, user) ->
user.updateAttributes email: "1@1.com", -> test.ok "updated"
it "should trigger before destroy", (test)->
User.beforeDestroy = () ->
User.beforeDestroy = null
test.done()
User.create {}, (err, user) ->
user.destroy()
it "should trigger after destroy", (test) ->
User.afterDestroy = () ->
User.afterDestroy = null
test.done()
User.create (err, user) ->
user.destroy()
it 'allows me to modify attributes before saving', (test) ->
test.done()