UNPKG

bitcore-node

Version:

A blockchain indexing node with extended capabilities using bitcore

91 lines 3.97 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.minutesAgo = void 0; exports.resetDatabase = resetDatabase; exports.resetModel = resetModel; exports.mockCollection = mockCollection; exports.mockStorage = mockStorage; exports.mockModel = mockModel; exports.expectObjectToHaveProps = expectObjectToHaveProps; const sinon_1 = __importDefault(require("sinon")); const block_1 = require("../../src/models/block"); const cache_1 = require("../../src/models/cache"); const coin_1 = require("../../src/models/coin"); const events_1 = require("../../src/models/events"); const rateLimit_1 = require("../../src/models/rateLimit"); const state_1 = require("../../src/models/state"); const transaction_1 = require("../../src/models/transaction"); const wallet_1 = require("../../src/models/wallet"); const walletAddress_1 = require("../../src/models/walletAddress"); const storage_1 = require("../../src/services/storage"); const chai_1 = require("chai"); async function resetDatabase() { console.log('Resetting database'); await Promise.all([ resetModel(block_1.BitcoinBlockStorage), resetModel(transaction_1.TransactionStorage), resetModel(coin_1.CoinStorage), resetModel(walletAddress_1.WalletAddressStorage), resetModel(wallet_1.WalletStorage), resetModel(state_1.StateStorage), resetModel(rateLimit_1.RateLimitStorage), resetModel(events_1.EventStorage), resetModel(cache_1.CacheStorage) ]); } async function resetModel(model) { return model.collection.deleteMany({}); } function mockCollection(toReturn, collectionMethods = {}) { const mock = Object.assign({ find: sinon_1.default.stub().returnsThis(), aggregate: sinon_1.default.stub().returnsThis(), count: sinon_1.default.stub().returnsThis(), sort: sinon_1.default.stub().returnsThis(), project: sinon_1.default.stub().returnsThis(), insertOne: sinon_1.default.stub().resolves(), insertMany: sinon_1.default.stub().resolves(), bulkWrite: sinon_1.default.stub().resolves(), remove: sinon_1.default.stub().resolves(), deleteOne: sinon_1.default.stub().resolves(), deleteMany: sinon_1.default.stub().resolves(), limit: sinon_1.default.stub().returnsThis(), toArray: sinon_1.default.stub().resolves(toReturn instanceof Array ? toReturn : [toReturn]), findOne: sinon_1.default.stub().resolves(toReturn), update: sinon_1.default.stub().resolves({ result: toReturn }), updateOne: sinon_1.default.stub().resolves(toReturn), updateMany: sinon_1.default.stub().resolves({ nModified: 1 }), addCursorFlag: sinon_1.default.stub().returnsThis() }, collectionMethods); return mock; } function mockStorage(toReturn, collectionMethods = {}) { storage_1.Storage.db = { collection: sinon_1.default.stub().returns(mockCollection(toReturn, collectionMethods)) }; return storage_1.Storage; } function mockModel(collectionName, toReturn, collectionMethods = {}) { if (!storage_1.Storage.db) { storage_1.Storage.db = { collection: sinon_1.default.stub().returns(mockCollection(toReturn, collectionMethods)) }; } const collectionFn = storage_1.Storage.db.collection; if (collectionFn.withArgs) { collectionFn.withArgs(collectionName).returns(mockCollection(toReturn, collectionMethods)); } } function expectObjectToHaveProps(obj, props) { (0, chai_1.expect)(obj).to.include.all.keys(Object.keys(props)); for (const key in props) { (0, chai_1.expect)(obj[key]).to.be.a(props[key]); } } ; const minutesAgo = (minutes) => new Date(Date.now() - 1000 * 60 * minutes); exports.minutesAgo = minutesAgo; //# sourceMappingURL=index.js.map