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

import {isObject} from 'util';

import * as chai from 'chai';
import {Connection} from '../src/Connection';
import {MemoryAdapter} from '../src/adapters/MemoryAdapter';
import {Book} from './fixtures/BookModel';
import {manager} from '../src/manager';

const expect = chai.expect;

describe('manager', () => {
  it('export', () => {
    expect(manager).to.be.an('object');
  });
  

  it('get / add / has / define connection', () => {   
    expect(manager.hasConnection('test')).to.be.false;
    
    manager.defineConnection({
      name: 'test',
      adapter: MemoryAdapter
    });
      
    expect(manager.hasConnection('test')).to.be.true;
    expect(manager.getConnection('test')).to.be.instanceof(Connection);    
  });
  
  it('get / add / has model', () => {    
    expect(manager.hasModel('Book')).to.be.true;
    expect(manager.getModel('Book')).to.be.an('function');
  });
  
  it('init', done => {
    manager.init().subscribe(() => {}, () => {}, () => done());
  });
});