Mangouste & champ unique

J'ai le schéma suivant avec la mangouste:

var SimSchema = new Schema({
    msisdn     : { type : String , unique : true, required : true },
    imsi       : { type : String , unique : true, required : true },
    status     : { type : Boolean, default: true},
    signal     : { type : Number },
    probe_name : { type:  String , required : true }
});

J'ai uniqueoption pour le msisdn et imsi.

Dans certains cas, cette condition est respectée.
Pour la suite mocha test:

"use strict";
var app      = require('../../app');
var http     = require('http');
var request  = require('supertest');
var mongoose = require('mongoose');
var should   = require('should');
describe('[ Sim controller ] ', function(){
before(function(done) {
app.set_env('test');
this.server = app.start(function() {
mongoose.connection.db.dropDatabase(function() {
done();
})
});
});
beforeEach(function(done){
done();
});
it('Sim with good parameters should be created in the database', function(done){
var newSim = {
msisdn:     '1234',
imsi:       '007',
probe_name: 'BOUCHON_1'
};
request(this.server)
.post('/sims')
.set('Content-Type', 'application/json')
.send(newSim)
.expect(200).end(function(err, res) {
if (err) return done(err);
res.body.should.have.property('imsi');
res.body.should.have.property('probe_name');
res.body.should.have.property('msisdn');
setTimeout(function() {
done();
}, 1000);
});
});
it('Sim imsi/msisdn is unique in the database', function(done){
var newSim = {
msisdn:     '1234',
imsi:       '007',
probe_name: 'BOUCHON_1'
};
request(this.server)
.post('/sims')
.set('Content-Type', 'application/json')
.send(newSim)
.expect(200).end(function(err, res) {
if (err) return done(err);
res.body.should.have.property('error').equal('Duplicate Item');
done();
});
});
after(function(done) {
app.stop(done);
});
});

Ça fonctionne si je le lance directement:

julio$ mocha test/controllers/ctrl_sim.js 

Mais Si je le lance grâce à la récessive option, elle a échoué:

  1) [ Sim controller ]  Sim imsi/msisdn is unique in the database:
Uncaught AssertionError: expected { __v: 0,
imsi: '007',
msisdn: '1234',
probe_name: 'BOUCHON_1',
_id: '530a2b7f52273aa90783baf0',
status: true } to have property 'error'

J'ai lu sur pile que, parfois, la unique condition n'est pas respectée, l'indice n'est pas actualisé.
Vous pensez que c'est mon cas? En fait, j'ai supprimer la base de données pour chaque moka suite de tests. Peut-être mongo n'ont pas le temps de recréer tous les indices à chaque fois.

Une idée?

InformationsquelleAutor Julio | 2014-02-23