public function testShouldExecuteBulkWrite()
{
$entity = m::mock(HasSchemaInterface::class);
$schema = m::mock(Schema::class);
$entity->schema = $schema;
$mongoBulkWrite = m::mock(new MongoBulkWrite());
$pool = m::mock(Pool::class);
$connection = m::mock(Connection::class);
$manager = m::mock(Manager::class);
$connection->defaultDatabase = 'foo';
$schema->collection = 'bar';
$namespace = 'foo.bar';
Ioc::instance(Pool::class, $pool);
// Expect
$entity->shouldReceive('getSchema')->once()->with()->andReturn($schema);
$pool->shouldReceive('getConnection')->once()->with()->andReturn($connection);
$connection->shouldReceive('getRawManager')->once()->with()->andReturn($manager);
$manager->shouldReceive('executeBulkWrite')->once()->with($namespace, $mongoBulkWrite, m::type(WriteConcern::class))->andReturn(true);
$bulkWrite = m::mock(BulkWrite::class . '[getBulkWrite]', [$entity]);
$bulkWrite->shouldReceive('getBulkWrite')->once()->with()->andReturn($mongoBulkWrite);
// Act
$bulkWrite->execute();
}