/
home
/
obinna
/
html
/
cravings
/
vendor
/
mongodb
/
mongodb
/
tests
/
Operation
/
Upload File
HOME
<?php namespace MongoDB\Tests\Operation; use MongoDB\Exception\InvalidArgumentException; use MongoDB\Operation\Aggregate; class AggregateTest extends TestCase { public function testConstructorPipelineArgumentMustBeAList() { $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('$pipeline is not a list (unexpected index: "1")'); new Aggregate($this->getDatabaseName(), $this->getCollectionName(), [1 => ['$match' => ['x' => 1]]]); } /** * @dataProvider provideInvalidConstructorOptions */ public function testConstructorOptionTypeChecks(array $options) { $this->expectException(InvalidArgumentException::class); new Aggregate($this->getDatabaseName(), $this->getCollectionName(), [['$match' => ['x' => 1]]], $options); } public function provideInvalidConstructorOptions() { $options = []; foreach ($this->getInvalidBooleanValues(true) as $value) { $options[][] = ['allowDiskUse' => $value]; } foreach ($this->getInvalidIntegerValues() as $value) { $options[][] = ['batchSize' => $value]; } foreach ($this->getInvalidBooleanValues() as $value) { $options[][] = ['bypassDocumentValidation' => $value]; } foreach ($this->getInvalidDocumentValues() as $value) { $options[][] = ['collation' => $value]; } foreach ($this->getInvalidStringValues() as $value) { $options[][] = ['comment' => $value]; } foreach ($this->getInvalidHintValues() as $value) { $options[][] = ['hint' => $value]; } foreach ($this->getInvalidBooleanValues() as $value) { $options[][] = ['explain' => $value]; } foreach ($this->getInvalidIntegerValues() as $value) { $options[][] = ['maxAwaitTimeMS' => $value]; } foreach ($this->getInvalidIntegerValues() as $value) { $options[][] = ['maxTimeMS' => $value]; } foreach ($this->getInvalidReadConcernValues() as $value) { $options[][] = ['readConcern' => $value]; } foreach ($this->getInvalidReadPreferenceValues() as $value) { $options[][] = ['readPreference' => $value]; } foreach ($this->getInvalidSessionValues() as $value) { $options[][] = ['session' => $value]; } foreach ($this->getInvalidArrayValues() as $value) { $options[][] = ['typeMap' => $value]; } foreach ($this->getInvalidBooleanValues(true) as $value) { $options[][] = ['useCursor' => $value]; } foreach ($this->getInvalidWriteConcernValues() as $value) { $options[][] = ['writeConcern' => $value]; } return $options; } public function testConstructorBatchSizeOptionRequiresUseCursor() { $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('"batchSize" option should not be used if "useCursor" is false'); new Aggregate( $this->getDatabaseName(), $this->getCollectionName(), [['$match' => ['x' => 1]]], ['batchSize' => 100, 'useCursor' => false] ); } private function getInvalidHintValues() { return [123, 3.14, true]; } }