|  |  |  | <?php
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace yiiunit\extensions\mongodb\file;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use yiiunit\extensions\mongodb\MongoDbTestCase;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * @group mongodb
 | 
					
						
							|  |  |  |  */
 | 
					
						
							|  |  |  | class CollectionTest extends MongoDbTestCase
 | 
					
						
							|  |  |  | {
 | 
					
						
							|  |  |  | 	protected function tearDown()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$this->dropFileCollection('fs');
 | 
					
						
							|  |  |  | 		parent::tearDown();
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Tests :
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testGetChunkCollection()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$collection = $this->getConnection()->getFileCollection();
 | 
					
						
							|  |  |  | 		$chunkCollection = $collection->getChunkCollection();
 | 
					
						
							|  |  |  | 		$this->assertTrue($chunkCollection instanceof \yii\mongodb\Collection);
 | 
					
						
							|  |  |  | 		$this->assertTrue($chunkCollection->mongoCollection instanceof \MongoCollection);
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testFind()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$collection = $this->getConnection()->getFileCollection();
 | 
					
						
							|  |  |  | 		$cursor = $collection->find();
 | 
					
						
							|  |  |  | 		$this->assertTrue($cursor instanceof \MongoGridFSCursor);
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testInsertFile()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$collection = $this->getConnection()->getFileCollection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$filename = __FILE__;
 | 
					
						
							|  |  |  | 		$id = $collection->insertFile($filename);
 | 
					
						
							|  |  |  | 		$this->assertTrue($id instanceof \MongoId);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$files = $this->findAll($collection);
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, count($files));
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		/** @var $file \MongoGridFSFile */
 | 
					
						
							|  |  |  | 		$file = $files[0];
 | 
					
						
							|  |  |  | 		$this->assertEquals($filename, $file->getFilename());
 | 
					
						
							|  |  |  | 		$this->assertEquals(file_get_contents($filename), $file->getBytes());
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testInsertFileContent()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$collection = $this->getConnection()->getFileCollection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$bytes = 'Test file content';
 | 
					
						
							|  |  |  | 		$id = $collection->insertFileContent($bytes);
 | 
					
						
							|  |  |  | 		$this->assertTrue($id instanceof \MongoId);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$files = $this->findAll($collection);
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, count($files));
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		/** @var $file \MongoGridFSFile */
 | 
					
						
							|  |  |  | 		$file = $files[0];
 | 
					
						
							|  |  |  | 		$this->assertEquals($bytes, $file->getBytes());
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @depends testInsertFileContent
 | 
					
						
							|  |  |  | 	 */
 | 
					
						
							|  |  |  | 	public function testGet()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$collection = $this->getConnection()->getFileCollection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$bytes = 'Test file content';
 | 
					
						
							|  |  |  | 		$id = $collection->insertFileContent($bytes);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$file = $collection->get($id);
 | 
					
						
							|  |  |  | 		$this->assertTrue($file instanceof \MongoGridFSFile);
 | 
					
						
							|  |  |  | 		$this->assertEquals($bytes, $file->getBytes());
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @depends testGet
 | 
					
						
							|  |  |  | 	 */
 | 
					
						
							|  |  |  | 	public function testDelete()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$collection = $this->getConnection()->getFileCollection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$bytes = 'Test file content';
 | 
					
						
							|  |  |  | 		$id = $collection->insertFileContent($bytes);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->assertTrue($collection->delete($id));
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$file = $collection->get($id);
 | 
					
						
							|  |  |  | 		$this->assertNull($file);
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | }
 |