/** * Test isStockAvailable() with a purchasable non variant. * * @dataProvider dataIsValidVariant */ public function testIsValidVariant($variantIsEnabled, $variantStock, $stockRequired, $useStock, $isValid) { $variant = $this->prophesize('Elcodi\\Component\\Product\\Entity\\Interfaces\\VariantInterface'); $variant->isEnabled()->willReturn($variantIsEnabled); $variant->getStock()->willReturn($variantStock); $variant = $variant->reveal(); $variantValidator = new VariantStockValidator(); $this->assertEquals($isValid, $variantValidator->isStockAvailable($variant, $stockRequired, $useStock)); $purchasableValidator = new PurchasableStockValidator(); $purchasableValidator->addPurchasableStockValidator($variantValidator); $this->assertEquals($isValid, $purchasableValidator->isStockAvailable($variant, $stockRequired, $useStock)); }
/** * Test isStockAvailable() with a purchasable non pack. * * @dataProvider dataIsValidPack */ public function testIsValidPack($packIsEnabled, $packType, $packStock, $productIsEnabled, $productStock, $variantIsEnabled, $variantStock, $stockRequired, $useStock, $isValid) { $product = $this->prophesize('Elcodi\\Component\\Product\\Entity\\Interfaces\\ProductInterface'); $product->isEnabled()->willReturn($productIsEnabled); $product->getStock()->willReturn($productStock); $variant = $this->prophesize('Elcodi\\Component\\Product\\Entity\\Interfaces\\VariantInterface'); $variant->isEnabled()->willReturn($variantIsEnabled); $variant->getStock()->willReturn($variantStock); $pack = $this->prophesize('Elcodi\\Component\\Product\\Entity\\Interfaces\\PackInterface'); $pack->isEnabled()->willReturn($packIsEnabled); $pack->getStockType()->willReturn($packType); $pack->getStock()->willReturn($packStock); $pack->getPurchasables()->willReturn(new ArrayCollection([$product->reveal(), $variant->reveal()])); $pack = $pack->reveal(); $packValidator = new PackStockValidator(); $packValidator->addPurchasableStockValidator(new ProductStockValidator()); $packValidator->addPurchasableStockValidator(new VariantStockValidator()); $this->assertEquals($isValid, $packValidator->isStockAvailable($pack, $stockRequired, $useStock)); $purchasableValidator = new PurchasableStockValidator(); $purchasableValidator->addPurchasableStockValidator(new ProductStockValidator()); $purchasableValidator->addPurchasableStockValidator(new VariantStockValidator()); $purchasableValidator->addPurchasableStockValidator($packValidator); $this->assertEquals($isValid, $purchasableValidator->isStockAvailable($pack, $stockRequired, $useStock)); }