@platform/fsdb.mongo
Version:
Standard IDb abstraction over mongodb.
240 lines (239 loc) • 9.65 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var test_1 = require("../test");
var _1 = require(".");
test_1.dotenv.config();
var uri = process.env.MONGO_TEST;
var db = 'test';
var collection = 'fsdb.mongo/store';
describe('Store (Mongo)', function () {
var _this = this;
this.timeout(20000);
var store;
before(function () {
store = _1.MongoStore.create({ uri: uri, db: db, collection: collection });
});
var drop = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, store.drop()];
case 1:
_a.sent();
return [2];
}
});
}); };
after(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, drop()];
case 1:
_a.sent();
store.dispose();
return [2];
}
});
}); });
it('insert', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var res;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, drop()];
case 1:
_a.sent();
return [4, store.insert({ name: 'insert' })];
case 2:
res = _a.sent();
test_1.expect(res.name).to.eql('insert');
test_1.expect(res._id).to.not.eql(undefined);
return [2];
}
});
}); });
it.only('insertMany', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var docs, res;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, drop()];
case 1:
_a.sent();
docs = [
{ name: 'insertMany', count: 1 },
{ name: 'insertMany', count: 2 },
];
return [4, store.insertMany(docs)];
case 2:
res = _a.sent();
test_1.expect(res[0].count).to.eql(1);
test_1.expect(res[0]._id).to.not.eql(undefined);
test_1.expect(res[1].count).to.eql(2);
test_1.expect(res[1]._id).to.not.eql(undefined);
return [2];
}
});
}); });
it('updateOne (existing doc)', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var doc, res;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, drop()];
case 1:
_a.sent();
return [4, store.insert({ name: 'update' })];
case 2:
doc = _a.sent();
return [4, store.updateOne({ _id: doc._id }, { name: 'update => foo' })];
case 3:
res = _a.sent();
test_1.expect(res.modified).to.eql(true);
test_1.expect(res.upsert).to.eql(false);
test_1.expect(res.doc).to.eql(undefined);
return [2];
}
});
}); });
it('updateOne (upsert)', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var res;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, drop()];
case 1:
_a.sent();
return [4, store.updateOne({}, { name: 'new doc' }, { upsert: true })];
case 2:
res = _a.sent();
test_1.expect(res.modified).to.eql(true);
test_1.expect(res.upsert).to.eql(true);
test_1.expect(res.doc && typeof res.doc._id === 'string').to.eql(true);
test_1.expect(res.doc && res.doc.name).to.eql('new doc');
return [2];
}
});
}); });
it('findOne', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var res1, res2;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, drop()];
case 1:
_a.sent();
return [4, store.findOne({})];
case 2:
res1 = _a.sent();
test_1.expect(res1).to.eql(undefined);
return [4, store.insertMany([{ foo: 123 }, { foo: 456 }])];
case 3:
_a.sent();
return [4, store.findOne({})];
case 4:
res2 = _a.sent();
test_1.expect(res2 && res2.foo).to.eql(123);
return [2];
}
});
}); });
it('find', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var res1, res2, res3, res4;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, drop()];
case 1:
_a.sent();
return [4, store.find({})];
case 2:
res1 = _a.sent();
test_1.expect(res1).to.eql([]);
return [4, store.insertMany([{ foo: 123 }, { foo: 456 }, { foo: 123 }])];
case 3:
_a.sent();
return [4, store.find({})];
case 4:
res2 = _a.sent();
test_1.expect(res2.length).to.eql(3);
test_1.expect(res2[0].foo).to.eql(123);
test_1.expect(res2[1].foo).to.eql(456);
test_1.expect(res2[2].foo).to.eql(123);
return [4, store.find({ foo: 123 })];
case 5:
res3 = _a.sent();
test_1.expect(res3.length).to.eql(2);
test_1.expect(res3[0].foo).to.eql(123);
test_1.expect(res3[1].foo).to.eql(123);
return [4, store.find({ foo: -1 })];
case 6:
res4 = _a.sent();
test_1.expect(res4).to.eql([]);
return [2];
}
});
}); });
it('remove (single, default)', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var res0, res1, res2;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, drop()];
case 1:
_a.sent();
return [4, store.remove({ foo: 123 })];
case 2:
_a.sent();
return [4, store.find({})];
case 3:
res0 = _a.sent();
test_1.expect(res0).to.eql([]);
return [4, store.insertMany([{ foo: 123 }, { foo: 456 }, { foo: 789 }])];
case 4:
_a.sent();
return [4, store.remove({})];
case 5:
_a.sent();
return [4, store.find({})];
case 6:
res1 = _a.sent();
test_1.expect(res1.length).to.eql(2);
test_1.expect(res1[0].foo).to.eql(456);
test_1.expect(res1[1].foo).to.eql(789);
return [4, store.remove({ foo: 456 })];
case 7:
_a.sent();
return [4, store.find({})];
case 8:
res2 = _a.sent();
test_1.expect(res2.length).to.eql(1);
test_1.expect(res2[0].foo).to.eql(789);
return [2];
}
});
}); });
it('remove (multi)', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var res1, res2;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, drop()];
case 1:
_a.sent();
return [4, store.insertMany([{ foo: 123 }, { foo: 456 }, { foo: 123 }, { foo: 888 }])];
case 2:
_a.sent();
return [4, store.remove({ foo: 123 }, { multi: true })];
case 3:
_a.sent();
return [4, store.find({})];
case 4:
res1 = _a.sent();
test_1.expect(res1.length).to.eql(2);
test_1.expect(res1[0].foo).to.eql(456);
test_1.expect(res1[1].foo).to.eql(888);
return [4, store.remove({}, { multi: true })];
case 5:
_a.sent();
return [4, store.find({})];
case 6:
res2 = _a.sent();
test_1.expect(res2).to.eql([]);
return [2];
}
});
}); });
});