コード例 #1
0
 /**
  * @param $data
  *
  * @return ChunkInterface
  */
 public function upload($data)
 {
     $chunk = new Chunk();
     $chunk->setData($data);
     $chunk->setLength(strlen($data));
     $chunk->setPolicyCollection(new PolicyCollection());
     $chunk->setHash($this->factory->createHash($data));
     if ($this->database->contains($chunk->getHash(), Chunk::class)) {
         return $chunk;
     }
     return $this->database->store($chunk, array(ReplicatorInterface::OPTION_NAME => ReplicatorInterface::TYPE_FULL));
 }
コード例 #2
0
 public function testUploadExists()
 {
     $data = 'This is my data';
     $hash = $this->getFactory()->createHash($data);
     $chunk = new Chunk();
     $chunk->setHash($hash);
     $chunk->setData($data);
     $factory = $this->prophesize(FactoryInterface::class);
     $factory->createHash($data)->willReturn($hash);
     $database = $this->prophesize(DatabaseInterface::class);
     $database->store(Argument::type(ChunkInterface::class))->should(new NoCallsPrediction());
     $database->contains($hash, Chunk::class)->should(new CallPrediction())->willReturn(true);
     $database->fetch($hash, Chunk::class)->should(new NoCallsPrediction());
     $manager = new ChunkManager($factory->reveal(), $database->reveal());
     $result = $manager->upload($data);
     $this->assertEquals($chunk->getHash(), $result->getHash());
     $this->assertEquals($chunk->getData(), $result->getData());
 }