1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
// test/object-del-hook.js
//
// Test del hooks for Databank objects
//
// Copyright 2012, E14N https://e14n.com/
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
var assert = require('assert'),
vows = require('vows'),
databank = require('../databank'),
Databank = databank.Databank,
DatabankObject = require('../databankobject').DatabankObject;
var objectDelHookContext = function(driver, params) {
var context = {};
context["When we create a " + driver + " databank"] = {
topic: function() {
if (!params.hasOwnProperty('schema')) {
params.schema = {};
}
params.schema.flight = {
pkey: 'number'
};
return Databank.get(driver, params);
},
'We can connect to it': {
topic: function(bank) {
bank.connect(params, this.callback);
},
teardown: function(bank) {
var callback = this.callback;
// Workaround for vows bug
setImmediate(function() {
bank.disconnect(function(err) {
callback();
});
});
},
'without an error': function(err) {
assert.ifError(err);
},
'and we can initialize the Flight class': {
topic: function(bank) {
var Flight = DatabankObject.subClass('flight');
Flight.bank = function() {
return bank;
};
return Flight;
},
'which is valid': function(Flight) {
assert.isFunction(Flight);
},
'and we can create and delete a Flight': {
topic: function(Flight) {
var cb = this.callback,
called = {
before: false,
after: false
};
Flight.prototype.beforeDel = function(callback) {
called.before = true;
callback(null);
};
Flight.prototype.afterDel = function(callback) {
called.after = true;
callback(null);
};
Flight.create({number: "AC761"}, function(err, flight) {
if (err) {
cb(err, null);
} else {
flight.del(function(err) {
if (err) {
cb(err, null);
} else {
// note: not the flight
cb(null, called);
}
});
}
});
},
'without an error': function(err, called) {
assert.ifError(err);
assert.isObject(called);
},
'and the before hook is called': function(err, called) {
assert.isTrue(called.before);
},
'and the after hook is called': function(err, called) {
assert.isTrue(called.after);
}
}
}
}
};
return context;
};
module.exports = objectDelHookContext;
|