/** * @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)); }
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()); }