UNPKG

@platform/fsdb.mongo

Version:

Standard IDb abstraction over mongodb.

240 lines (239 loc) 9.65 kB
"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]; } }); }); }); });