public function testShouldConstructANewConnection()
{
// Arrange
$params = ['conn/my_db', ['options'], ['driver_opts']];
$mongoClient = new Client();
$mongoManager = new Manager('mongodb://localhost:27017');
$container = m::mock(Container::class);
Ioc::setContainer($container);
// Act
$expectedParams = $params;
$expectedParams[2]['typeMap'] = ['array' => 'array', 'document' => 'array'];
$container->shouldReceive('make')->once()->with(Client::class, $expectedParams)->andReturn($mongoClient);
$container->shouldReceive('make')->once()->with(Manager::class, $expectedParams)->andReturn($mongoManager);
// Assert
$connection = new Connection($params[0], $params[1], $params[2]);
$this->assertAttributeEquals($mongoClient, 'rawConnection', $connection);
$this->assertAttributeEquals($mongoManager, 'rawManager', $connection);
$this->assertAttributeEquals('my_db', 'defaultDatabase', $connection);
}