| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?php
- namespace Alcaeus\MongoDbAdapter\Tests\Mongo;
- use Alcaeus\MongoDbAdapter\Tests\TestCase;
- class MongoGridFSFileTest extends TestCase
- {
- public function testSerialize()
- {
- $this->prepareFile('abcd', ['filename' => 'foo']);
- $file = $this->getGridFS()->findOne(['filename' => 'foo']);
- $this->assertInstanceOf(\MongoGridFSFile::class, $file);
- $this->assertIsString(serialize($file));
- }
- public function testFileProperty()
- {
- $file = $this->getFile();
- $this->assertArrayHasKey('_id', $file->file);
- $this->assertMatches(
- [
- 'length' => 666,
- 'filename' => 'file',
- 'md5' => 'md5',
- ],
- $file->file
- );
- }
- public function testGetFilename()
- {
- $file = $this->getFile();
- $this->assertSame('file', $file->getFilename());
- }
- public function testGetSize()
- {
- $file = $this->getFile();
- $this->assertSame(666, $file->getSize());
- }
- public function testWrite()
- {
- $filename = '/tmp/test-mongo-grid-fs-file';
- $id = $this->prepareFile('abcd', ['filename' => $filename]);
- @unlink($filename);
- $file = $this->getGridFS()->findOne(['_id' => $id]);
- $this->assertInstanceOf(\MongoGridFSFile::class, $file);
- $file->write();
- $this->assertFileExists($filename);
- $this->assertSame('e2fc714c4727ee9395f324cd2e7f331f', md5_file($filename));
- unlink($filename);
- }
- public function testWriteSpecifyFilename()
- {
- $id = $this->prepareFile();
- $filename = '/tmp/test-mongo-grid-fs-file';
- @unlink($filename);
- $file = $this->getGridFS()->findOne(['_id' => $id]);
- $this->assertInstanceOf(\MongoGridFSFile::class, $file);
- $file->write($filename);
- $this->assertFileExists($filename);
- $this->assertSame('e2fc714c4727ee9395f324cd2e7f331f', md5_file($filename));
- unlink($filename);
- }
- public function testGetBytes()
- {
- $id = $this->prepareFile();
- $file = $this->getFile(['_id' => $id, 'length' => 4]);
- $result = $file->getBytes();
- $this->assertSame('abcd', $result);
- }
- public function testGetResource()
- {
- $data = str_repeat('a', 500 * 1024);
- $id = $this->prepareFile($data);
- $file = $this->getGridFS()->findOne(['_id' => $id]);
- $this->assertInstanceOf(\MongoGridFSFile::class, $file);
- $result = $file->getResource();
- $this->assertTrue(is_resource($result));
- $this->assertSame($data, stream_get_contents($result));
- }
- /**
- * @var \MongoGridFSFile
- */
- protected function getFile($extra = [])
- {
- $file = [
- '_id' => new \MongoID(),
- 'length' => 666,
- 'filename' => 'file',
- 'md5' => 'md5',
- ];
- $file = array_merge($file, $extra);
- return new \MongoGridFSFile($this->getGridFS(), $file);
- }
- /**
- * @var \MongoID
- */
- protected function prepareFile($data = 'abcd', $extra = [])
- {
- $collection = $this->getGridFS();
- return $collection->storeBytes($data, $extra);
- }
- /**
- * @param string $name
- * @param \MongoDB|null $database
- * @return \MongoGridFS
- */
- protected function getGridFS($name = 'testfs', \MongoDB $database = null)
- {
- if ($database === null) {
- $database = $this->getDatabase();
- }
- return new \MongoGridFS($database, $name);
- }
- }
|