public function testEnsureDocumentShardingThrowsExceptionIfThereWasAnError()
{
$dbName = DOCTRINE_MONGODB_DATABASE;
$classMetadata = $this->dm->getClassMetadata(\Documents\Sharded\ShardedUser::class);
$collectionName = $classMetadata->getCollection();
$dbMock = $this->getMockDatabase();
$dbMock->method('getName')->willReturn($dbName);
$adminDBMock = $this->getMockDatabase();
$connMock = $this->getMockConnection();
$connMock->method('selectDatabase')->with('admin')->willReturn($adminDBMock);
$this->dm->connection = $connMock;
$this->dm->documentDatabases = array($classMetadata->getName() => $dbMock);
$adminDBMock->expects($this->at(0))->method('command')->with(array('enableSharding' => $dbName))->willReturn(array('ok' => 1));
$adminDBMock->expects($this->at(1))->method('command')->with(array('shardCollection' => $dbName . '.' . $collectionName, 'key' => array('_id' => 'hashed')))->willReturn(array('ok' => 0, 'code' => 666, 'errmsg' => 'Scary error'));
$this->schemaManager->ensureDocumentSharding($classMetadata->getName());
}