function it_find_previous_and_next_products($productManager, SequentialEdit $sequentialEdit, ProductInterface $product, ProductInterface $previous, ProductInterface $next) { $sequentialEdit->getObjectSet()->willReturn([1, 6, 5, 2]); $sequentialEdit->countObjectSet()->willReturn(4); $product->getId()->willReturn(5); $productManager->find(6)->willReturn($previous); $productManager->find(2)->willReturn($next); $sequentialEdit->setCurrent($product)->shouldBeCalled(); $sequentialEdit->setPrevious($previous)->shouldBeCalled(); $sequentialEdit->setNext($next)->shouldBeCalled(); $this->findWrap($sequentialEdit, $product); }
/** * Find next sequential edit entity * * @param SequentialEdit $sequentialEdit * @param int $currentKey * * @return null|ProductInterface */ protected function findNext(SequentialEdit $sequentialEdit, $currentKey) { $next = null; $objectSet = $sequentialEdit->getObjectSet(); $productCount = $sequentialEdit->countObjectSet(); while (++$currentKey < $productCount && null === $next) { $next = $this->productRepository->findOneByWithValues($objectSet[$currentKey]); } return $next; }
/** * {@inheritDoc} */ public function countObjectSet() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'countObjectSet', array()); return parent::countObjectSet(); }
/** * Find next sequential edit entity * * @param SequentialEdit $sequentialEdit * @param int $currentKey * * @return null|ProductInterface */ protected function findNext(SequentialEdit $sequentialEdit, $currentKey) { $next = null; $objectSet = $sequentialEdit->getObjectSet(); $productCount = $sequentialEdit->countObjectSet(); while (++$currentKey < $productCount && null === $next) { $next = $this->productManager->find($objectSet[$currentKey]); } return $next; }