UNPKG

intkeygenerator

Version:

int secuential primarykey generator for SQL Server

95 lines (88 loc) 2.91 kB
var keyGenerator = require('../keyGenerator'); var chai = require('chai') , expect = chai.expect , should = chai.should(); var nextRangeStart = 0; function setCallbackRange(){ keyGenerator.setRangeReservationCallback(function (size, callback) { var next = nextRangeStart; nextRangeStart += size; callback(null, next); }); } describe('keygenerator', function(){ beforeEach(function() { keyGenerator.reset(); nextRangeStart = 0; setCallbackRange(); }); it('keyGenerator exporta un callback para pasarle la funcion que asigna los rangos.', function (){ expect(keyGenerator.setRangeReservationCallback).to.exist; }); it('la funcion callback para generar suministrar rangos se puede asignar una sola vez.', function (){ expect(function(){ keyGenerator.setRangeReservationCallback(function () { } )}).to.throw(); }); it('la funcion callback, al llamarla repetidamente, retorna la escala del valor size.', function (done){ keyGenerator.getBlock(20, function(err, value){ var rango = value; rango.should.be.equal(0); }); keyGenerator.getBlock(20, function(err, value){ var rango = value; rango.should.be.equal(20); }); keyGenerator.getBlock(20, function(err, value){ var rango = value; rango.should.be.equal(40); }); keyGenerator.getBlock(20, function(err, value){ var rango = value; rango.should.be.equal(60); done(); }); }); it('next debe retornar numeros secuenciales', function (done){ keyGenerator.next(function(err, value){ value.should.be.equal(1); keyGenerator.next(function(err, value){ value.should.be.equal(2); keyGenerator.next(function(err, value){ value.should.be.equal(3); keyGenerator.next(function(err, value){ value.should.be.equal(4); done(); }); }); }); }); }); it('Cuando se entregan todos los numeros del bloque asignado debe solicitar un nuevo bloque', function(done){ keyGenerator.getBlock(5, function (err, value) {}); for (var i = 1; i <= 5 ; i++){ keyGenerator.next(function(err, value){}); }; keyGenerator.next(function(err, value){ value.should.be.equal(6); done(); }); }); it('Si pido 2 bloques debe retornar numeros del segundo bloque', function(done){ keyGenerator.getBlock(5, function (err, value) {}); keyGenerator.getBlock(5, function (err, value) {}); keyGenerator.next(function(err, value){ value.should.be.equal(6); done(); }); }); it('si el callback para reservar un rango tiene error, value debe ser null', function(done){ keyGenerator.reset(); keyGenerator.setRangeReservationCallback(function (size, callback) { callback(new Error('Un error'), null); }); keyGenerator.next(function(err, value){ expect(err).to.exist; expect(value).to.not.exist; done(); }); }); });