/** * Verify Queue can be constructed with \MongoDB\Collection * * @test * @covers ::__construct * * @return void */ public function constructWithCollection() { $mongo = new \MongoDB\Client($this->mongoUrl, [], ['typeMap' => ['root' => 'array', 'document' => 'array', 'array' => 'array']]); $collection = $mongo->selectDatabase('testing')->selectCollection('custom_collection'); $collection->drop(); $queue = new Queue($collection); $payload = ['key1' => 0, 'key2' => true]; $queue->send($payload, 34, 0.8); $expected = ['payload' => $payload, 'running' => false, 'resetTimestamp' => (new UTCDateTime(Queue::MONGO_INT32_MAX))->toDateTime()->getTimestamp(), 'earliestGet' => 34, 'priority' => 0.8]; $this->assertSame(1, $collection->count()); $message = $collection->findOne(); $this->assertLessThanOrEqual(time(), $message['created']->toDateTime()->getTimestamp()); $this->assertGreaterThan(time() - 10, $message['created']->toDateTime()->getTimestamp()); unset($message['_id'], $message['created']); $message['resetTimestamp'] = $message['resetTimestamp']->toDateTime()->getTimestamp(); $message['earliestGet'] = $message['earliestGet']->toDateTime()->getTimestamp(); $this->assertSame($expected, $message); }