/**
  * @param AddStorage $addStorage
  */
 public function add(AddStorage $addStorage)
 {
     Assertion::integer($addStorage->storage);
     Assertion::integer($addStorage->quota);
     $storage = Storage::withUserDateUsageQuota(User::named($addStorage->name), new \DateTime(), Bytes::allocateUnits((int) $addStorage->storage), Quota::fromBytes(Bytes::allocateUnits((int) $addStorage->quota)));
     $this->storageRepository->add($storage);
 }
 /**
  * @test
  */
 public function shouldNotAddStorageOnMissingStorage()
 {
     $this->setExpectedException(InvalidArgumentException::class);
     $this->storageRepository->shouldReceive('add')->never();
     $addStorage = new AddStorage();
     $addStorage->name = 'username';
     $addStorage->quota = 100;
     $this->addStorageHandler->add($addStorage);
 }
 /**
  * @param Filter $filter
  * @param UnitOfMeasurement $unitOfMeasurement
  * @return StorageCollection
  */
 public function find(Filter $filter, UnitOfMeasurement $unitOfMeasurement)
 {
     return $this->repository->find($filter, $unitOfMeasurement);
 }
 /**
  * @param string $users
  * @param string $dateFrom
  * @param string $dateTo
  * @param string $unit
  * @return \JsonSerializable
  */
 public function getStorage($users, $dateFrom, $dateTo, $unit)
 {
     return $this->storageRepository->find($this->filterFactory->createFrom($users, $dateFrom, $dateTo), UnitOfMeasurement::fromString($unit));
 }