/** * @test * @loadFixture testGetProduct * @dataProvider provider__testOrderSaveAfter * * 1. OrderSaveAfter * 2. Mage::getModel('collpur/deal') ->load($dealId) ->processOrderItem($item); * 3. AW_Collpur_Model_Dealpurchases->connectWithFreeCoupons * * This the most important functions that should be tested * */ public function testOrderSaveAfter($data) { $orderMock = $this->getModelMock('sales/order', array('getAllItems')); /* Prepare array of fake sales order items */ $orderItems = array(); for ($i = 0; $i < 3; $i++) { $salesOrderMock = $this->getModelMock('sales/order_item', array('getProductOptionByCode', 'getId')); $itemData = new Varien_Object(); $itemData->setDealId($data['dealId']); /* Prepare fake order for orderItem */ $orderItem = new Varien_Object(); $orderItem->setId($data['dealId']); $orderItem->setCustomerName('Test order customer'); $orderItem->setCustomerId($data['dealId']); /* * ********************************* */ $salesOrderMock->expects($this->any())->method('getProductOptionByCode')->will($this->returnValue($itemData)); $salesOrderMock->expects($this->any())->method('getId')->will($this->returnValue($data['dealId'])); $salesOrderMock->setOrder($orderItem); $salesOrderMock->setData('qty_invoiced', $data['qtyToAdd']); $salesOrderMock->setData('qty_refunded', 0); $orderItems[] = $salesOrderMock; } $orderMock->expects($this->any())->method('getAllItems')->will($this->returnValue($orderItems)); $observer = new Varien_Object(); $observer->setOrder($orderMock); Mage::app()->getRequest()->setControllerName('sales_order_invoice'); $exception = false; if ($data['uid'] == '003' || $data['uid'] == '001' || $data['uid'] == '004') { $this->setExpectedException('Mage_Core_Exception'); $exception = true; } Mage::getModel('collpur/observer')->orderSaveAfter($observer); /* * If there was no exceiption during call of * Mage::getModel('collpur/deal') ->load($dealId) ->processOrderItem($item); * proceed with test * */ if (!$exception) { /* Check that number of purchases generated correct */ $purchasesCount = Mage::getResourceModel('collpur/dealpurchases_collection')->count(); $this->assertEquals($purchasesCount, $data['qtyToAdd'], 'Incorrect purchases collection count'); /* Check that correct number of coupons were generated */ $couponsCount = Mage::getResourceModel('collpur/coupon_collection')->count(); $this->assertEquals($couponsCount, $data['qtyToAdd'], 'Incorrect coupons collection count'); } }