/// <reference path="../typings/tsd.d.ts" />
'use strict';

import * as chai from 'chai';
import {MongoDBConnector} from '../src/connectors/MongoDBConnector';

const expect = chai.expect;

describe.only('MongoDBConnector', () => {

  let connection;

  before(done => {
    connection = MongoDBConnector.create({
      url: 'mongodb://localhost:27017/test_'
    });
    connection.connect().subscribe(() => done());
  });

  after(done => {
    done();
    // connection.destroyDb().subscribe(() => done());
  });

  it('be class', () => {
    expect(MongoDBConnector).to.be.an('function');
    expect(new MongoDBConnector({})).to.be.instanceof(MongoDBConnector);
  });

  it('have static create()', () => {
    expect(MongoDBConnector.create({})).to.be.instanceof(MongoDBConnector);
  });

  it('ObjectID', done => {
    const collection = 'test';

    connection.save(collection, {_id: 'testId', name: 'Test name'})
      .mergeMap(() => connection.get(collection, 'testId'))
      .subscribe(result => {
        expect(result._id).to.be.equal('testId');
        expect(result.name).to.be.equal('Test name');
        done();
      }, done);
  });
});