import Assert = require("assert"); import Sinon = require("sinon"); import MongoDB = require("mongodb"); import BluebirdPromise = require("bluebird"); import { IMongoClient } from "../../../src/lib/connectors/mongo/IMongoClient"; import { MongoConnector } from "../../../src/lib/connectors/mongo/MongoConnector"; describe("MongoConnector", function () { let mongoClientConnectStub: Sinon.SinonStub; describe("create", function () { before(function () { mongoClientConnectStub = Sinon.stub(MongoDB.MongoClient, "connect"); }); after(function() { mongoClientConnectStub.restore(); }); it("should create a connector", function () { const client = { db: Sinon.mock() }; mongoClientConnectStub.yields(undefined, client); const url = "mongodb://test.url"; const connector = new MongoConnector(url); return connector.connect("database") .then(function (client: IMongoClient) { Assert(client); Assert(mongoClientConnectStub.calledWith(url)); }); }); it("should fail creating a connector", function () { mongoClientConnectStub.yields(new Error("Error while creating mongo client")); const url = "mongodb://test.url"; const connector = new MongoConnector(url); return connector.connect("database") .then(function () { return BluebirdPromise.reject(new Error("It should not be here")); }) .error(function (client: IMongoClient) { Assert(client); Assert(mongoClientConnectStub.calledWith(url)); return BluebirdPromise.resolve(); }); }); }); });