protected function setUp() { $this->_product = Mage::getModel('Mage_Catalog_Model_Product'); $this->_product->load(1); $this->_block = Mage::app()->getLayout()->createBlock('Mage_Catalog_Block_Product_View_Type_Configurable'); $this->_block->setProduct($this->_product); }
protected function setUp() { $this->_block = new Mage_Catalog_Block_Product_AbstractTestAbstract(); $this->_product = new Mage_Catalog_Model_Product(); $this->_product->load(1); $this->_product->addData(array('image' => '/m/a/magento_image.jpg', 'small_image' => '/m/a/magento_image.jpg', 'thumbnail' => '/m/a/magento_image.jpg')); $this->_block->setProduct($this->_product); }
protected function setUp() { $this->_product = Mage::getModel('Mage_Catalog_Model_Product'); $this->_product->load(1); Mage::unregister('current_product'); Mage::register('current_product', $this->_product); $this->_block = Mage::app()->getLayout()->createBlock('Mage_Catalog_Block_Product_View_Options'); }
protected function setUp() { $this->_product = new Mage_Catalog_Model_Product(); $this->_product->load(1); Mage::unregister('current_product'); Mage::register('current_product', $this->_product); $this->_block = new Mage_Catalog_Block_Product_View_Options(); }
protected function setUp() { $this->_block = Mage::getObjectManager()->create('Mage_Catalog_Block_Product_View'); $this->_product = Mage::getModel('Mage_Catalog_Model_Product'); $this->_product->load(1); Mage::unregister('product'); Mage::register('product', $this->_product); }
protected function setUp() { $this->_product = new Mage_Catalog_Model_Product(); $this->_product->load(1); // fixture $this->_model = new Mage_Catalog_Model_Product_Type_Configurable(); // prevent fatal errors by assigning proper "singleton" of type instance to the product $this->_product->setTypeInstance($this->_model); }
/** * @test * @loadExpectation testDataHelperGetters * @loadFixture testDataHelperGetters */ public function testDataHelperGetters() { $product = $this->model->load(1); $expected = $this->expected('product'); $this->assertEquals($expected['video_width'], $this->helper->getVideoWidth($product)); $this->assertEquals($expected['video_height'], $this->helper->getVideoHeight($product)); $this->assertEquals($expected['youtube_url_code'], $this->helper->getEmbedUrl($product)); $this->assertEquals($expected['schema_duration'], $this->helper->getVideoDuration($product)); $this->assertEquals($expected['schema_name'], $product->getSchemaName()); $this->assertEquals($expected['schema_description'], $product->getSchemaDescription()); }
protected function setUp() { if (!self::$_isStubClass) { $this->getMockForAbstractClass('Mage_Catalog_Block_Product_Abstract', array(), self::STUB_CLASS, false); self::$_isStubClass = true; } $this->_block = Mage::app()->getLayout()->createBlock(self::STUB_CLASS); $this->_product = Mage::getModel('Mage_Catalog_Model_Product'); $this->_product->load(1); $this->_product->addData(array('image' => '/m/a/magento_image.jpg', 'small_image' => '/m/a/magento_image.jpg', 'thumbnail' => '/m/a/magento_image.jpg')); $this->_block->setProduct($this->_product); }
public function testGetCacheIdTags() { $this->assertFalse($this->_model->getCacheIdTags()); $this->_model->load(1); // fixture $this->assertEquals(array('catalog_product_1'), $this->_model->getCacheIdTags()); }
public function addAction() { if ($this->getRequest()->isGet()) { $gift_id = $this->getRequest()->getParam('gift', 0); if ($gift_id) { if (!Mage::helper('gifts')->isGiftUsed() && in_array($gift_id, Mage::helper('gifts')->getGiftsIds())) { $quote = Mage::getSingleton('checkout/session')->getQuote(); $cart = Mage::getModel('checkout/cart'); $product = new Mage_Catalog_Model_Product(); $product->load($gift_id); $cart->addProduct($product, 1); $cart->save(); foreach ($quote->getAllItems() as $item) { if ($item->getProductId() == $gift_id) { $item->setCustomPrice(0); $item->setOriginalCustomPrice(0); } } $cart->init(); $cart->save(); Mage::getSingleton('checkout/session')->setCartWasUpdated(true); } } } $this->_redirect('checkout/cart'); }
public static function productMediaFixture() { $product = new Mage_Catalog_Model_Product(); $product->load(1); $product->setTierPrice(array()); $product->setData('media_gallery', array('images' => array(array('file' => '/m/a/magento_image.jpg')))); $product->save(); }
protected function _getProductImageFile() { $product = new Mage_Catalog_Model_Product(); $product->load(1); $images = $product->getMediaGalleryImages()->getItems(); $image = reset($images); return $image['file']; }
protected function setUp() { $this->_block = new Mage_Checkout_Block_Cart_Item_Renderer(); $item = new Mage_Sales_Model_Quote_Item(); $product = new Mage_Catalog_Model_Product(); $product->load(1); $item->setProduct($product); $this->_block->setItem($item); }
public function testGetUrl() { $product = new Mage_Catalog_Model_Product(); $product->load(1); $this->assertStringEndsWith('simple-product.html', $this->_model->getUrl($product)); $product = new Mage_Catalog_Model_Product(); $product->setId(100); $this->assertStringEndsWith('catalog/product/view/id/100/', $this->_model->getUrl($product)); }
/** * @magentoDataFixture Mage/Catalog/_files/product_simple.php */ public function testGenerateUniqueSkuExistingProduct() { $product = new Mage_Catalog_Model_Product(); $product->load(1); $product->setId(null); $this->assertEquals('simple', $product->getSku()); $product->getResource()->getAttribute('sku')->getBackend()->beforeSave($product); $this->assertEquals('simple-1', $product->getSku()); }
/** * @magentoDataFixture Mage/Catalog/_files/product_with_image.php */ public function testThumbnail() { $product = new Mage_Catalog_Model_Product(); $product->load(1); $size = $this->_block->getThumbnailSize(); $this->assertGreaterThan(1, $size); $this->assertContains('/' . $size, $this->_block->getThumbnailUrl($product)); $this->assertStringEndsWith('magento_image.jpg', $this->_block->getThumbnailUrl($product)); }
public function testSaveProductRelationsNoChildren() { $childrenIds = $this->_product->getTypeInstance()->getChildrenIds(1); $this->assertNotEmpty(reset($childrenIds)); $this->_product->setAssociatedProductIds(array()); $this->_model->save($this->_product); $this->_product->load(1); $this->assertEquals(array(array()), $this->_product->getTypeInstance()->getChildrenIds(1)); }
/** * @magentoDataFixture Mage/Catalog/_files/products.php */ public function testGetProductUrl() { $expectedUrl = 'http://localhost/index.php/simple-product.html'; // product as object $product = new Mage_Catalog_Model_Product(); $product->load(1); $this->assertEquals($expectedUrl, $this->_helper->getProductUrl($product)); // product as ID $this->assertEquals($expectedUrl, $this->_helper->getProductUrl(1)); }
public function testGetAvailableInCategories() { $this->assertEquals(array(), $this->_model->getAvailableInCategories()); $this->_model->load(1); // fixture $actualCategoryIds = $this->_model->getAvailableInCategories(); sort($actualCategoryIds); // not depend on the order of items $this->assertEquals(array(2, 3, 4), $actualCategoryIds); }
protected function _prepareCollection() { if ($this->productId != null) { $product = Mage::getModel('catalog/product')->load($this->productId); switch ($this->_product->getTypeId()) { case 'grouped': $grouped_products = $this->getProductsInGrouped($product); $collection = new Varien_Data_Collection(); if (count($grouped_products) > 0) { foreach ($grouped_products as $productId => $_product) { $grouped_product = Mage::getModel('catalog/product')->load($productId); $rowObj = new Mage_Catalog_Model_Product(); $rowObj->setData(array('entity_id' => $productId, 'entity_type_id' => 'n/a', 'attribute_set_id' => 'n/a', 'type_id' => 'n/a', 'sku' => $grouped_product->getSku(), 'created_at' => 'n/a', 'updated_at' => 'n/a', 'has_options' => false, 'required_options' => false, 'name' => $grouped_product->getName(), 'is_saleable' => true, 'inventory_in_stock' => true, 'shirt_size' => 'n/a', 'price' => $grouped_product->getPrice(), 'stock_item' => new Varien_Object(), 'reward_point_product' => $grouped_product->getData('reward_point_product'), 'mw_reward_point_sell_product' => $grouped_product->getData('mw_reward_point_sell_product'))); $collection->addItem($rowObj); } $this->setCollection($collection); } break; case 'bundle': $bundled_product = new Mage_Catalog_Model_Product(); $bundled_product->load($this->_product->getId()); $selectionCollection = $bundled_product->getTypeInstance(true)->getSelectionsCollection($bundled_product->getTypeInstance(true)->getOptionsIds($bundled_product), $bundled_product)->addAttributeToSelect('sku')->addAttributeToSelect('mw_reward_point_sell_product')->addAttributeToSelect('reward_point_product')->addAttributeToSelect('name')->addAttributeToSelect('attribute_set_id')->addAttributeToSelect('type_id'); $this->setCollection($selectionCollection); parent::_prepareCollection(); break; case 'configurable': $productAttributeOptions = $product->getTypeInstance(true)->getConfigurableAttributesAsArray($product); $collection = new Varien_Data_Collection(); $custom_product = array(); if (is_array($productAttributeOptions) && count($productAttributeOptions) > 0) { foreach ($productAttributeOptions as $attr) { foreach ($attr['values'] as $opv) { $custom_product[] = time() + $opv['value_index'] + $attr['id']; $rowObj = new Mage_Catalog_Model_Product(); $rowObj->setData(array('entity_id' => $opv['value_index'], 'entity_type_id' => 0, 'option_id' => $product->getId(), 'custom_attribute_id' => $attr['attribute_id'], 'super_attribute' => true, 'attribute_set_id' => 'n/a', 'type_id' => 'n/a', 'sku' => 'n/a', 'created_at' => 'n/a', 'updated_at' => 'n/a', 'has_options' => false, 'required_options' => false, 'name' => $product->getName() . " - " . $attr['label'] . " - " . $opv['default_label'], 'is_saleable' => true, 'inventory_in_stock' => true, 'shirt_size' => 'n/a', 'price' => 0, 'stock_item' => new Varien_Object())); $collection->addItem($rowObj); } } } if ($product->getOptions()) { foreach ($product->getOptions() as $option) { foreach ($option->getValues() as $opv) { $rowObj = new Mage_Catalog_Model_Product(); $rowObj->setData(array('entity_id' => $opv->getOptionTypeId() + $option->getOptionId(), 'entity_type_id' => $opv->getOptionTypeId(), 'option_id' => $option->getOptionId(), 'custom_option' => true, 'attribute_set_id' => 'n/a', 'type_id' => 'n/a', 'sku' => $opv->getSku(), 'created_at' => 'n/a', 'updated_at' => 'n/a', 'has_options' => false, 'required_options' => false, 'name' => $option->getTitle() . " - " . $opv->getTitle(), 'is_saleable' => true, 'inventory_in_stock' => true, 'shirt_size' => 'n/a', 'price' => $opv->getPrice(), 'stock_item' => new Varien_Object())); $collection->addItem($rowObj); } } } $this->setCollection($collection); break; } } return $this; }
/** * @magentoConfigFixture current_store catalog/price/scope 1 * @magentoConfigFixture current_store currency/options/base GBP */ public function testAfterSave() { $product = new Mage_Catalog_Model_Product(); $product->load(1); $product->setOrigData(); $product->setPrice(9.99); $product->setStoreId(0); $this->_model->setScope($this->_model->getAttribute()); $this->_model->afterSave($product); $this->assertEquals('9.99', $product->getResource()->getAttributeRawValue($product->getId(), $this->_model->getAttribute()->getId(), Mage::app()->getStore()->getId())); }
/** * @magentoDataFixture Mage/Catalog/_files/product_virtual.php * @magentoDataFixture Mage/Sales/_files/quote.php */ public function testCollectTotalsWithVirtual() { $quote = new Mage_Sales_Model_Quote(); $quote->load('test01', 'reserved_order_id'); $product = new Mage_Catalog_Model_Product(); $product->load(21); $quote->addProduct($product); $quote->collectTotals(); $this->assertEquals(2, $quote->getItemsQty()); $this->assertEquals(1, $quote->getVirtualItemsQty()); $this->assertEquals(20, $quote->getGrandTotal()); $this->assertEquals(20, $quote->getBaseGrandTotal()); }
/** * @covers Mage_Catalog_Model_Product::isSalable * @covers Mage_Catalog_Model_Product::isSaleable * @covers Mage_Catalog_Model_Product::isAvailable * @covers Mage_Catalog_Model_Product::isInStock */ public function testIsSalable() { $this->_model->load(1); // fixture $this->assertTrue((bool) $this->_model->isSalable()); $this->assertTrue((bool) $this->_model->isSaleable()); $this->assertTrue((bool) $this->_model->isAvailable()); $this->assertTrue($this->_model->isInStock()); $this->_model->setStatus(0); $this->assertFalse((bool) $this->_model->isSalable()); $this->assertFalse((bool) $this->_model->isSaleable()); $this->assertFalse((bool) $this->_model->isAvailable()); $this->assertFalse($this->_model->isInStock()); }
/** * Get Product from request * * @return Mage_Catalog_Model_Product */ private function _getProduct() { if (!$this->_product) { $this->_product = Mage::getModel('Mage_Catalog_Model_Product'); $productId = (int) $this->getRequest()->getParam('product', 0); if (!$productId && $this->_getUrlRewrite()->getId()) { $productId = $this->_getUrlRewrite()->getProductId(); } if ($productId) { $this->_product->load($productId); } } return $this->_product; }
/** * @magentoDataFixture Mage/Catalog/_files/product_simple.php * @magentoAppIsolation enabled */ public function testPrepareLayout() { Mage::getConfig()->setCurrentAreaCode(Mage::helper("Mage_Backend_Helper_Data")->getAreaCode()); $product = new Mage_Catalog_Model_Product(); $product->load(1); // fixture Mage::register('product', $product); $layout = new Mage_Core_Model_Layout(); $layout->addBlock('Mage_Core_Block_Text', 'head'); $block = new Mage_Adminhtml_Block_Catalog_Product_Edit_Tabs(); $layout->addBlock($block); $this->assertArrayHasKey(0, $block->getTabsIds()); $this->assertNotEmpty($layout->getBlock('adminhtml.catalog.product.edit.tab.attributes')); }
public function testAll() { $product = new Mage_Catalog_Model_Product(); $product->load(2); Mage::register('product', $product); $block = new Mage_Catalog_Block_Product_List_Related(); $block->setLayout(new Mage_Core_Model_Layout()); $block->setTemplate('product/list/related.phtml'); $html = $block->toHtml(); $this->assertNotEmpty($html); $this->assertContains('Simple Related Product', $html); /* name */ $this->assertContains('product/1/', $html); /* part of url */ $this->assertInstanceOf('Mage_Catalog_Model_Resource_Product_Link_Product_Collection', $block->getItems()); }
/** * @magentoDataFixture Mage/Catalog/_files/product_configurable.php */ public function testGetFinalPrice() { $product = new Mage_Catalog_Model_Product(); $product->load(1); // fixture $model = new Mage_Catalog_Model_Product_Type_Configurable_Price(); // without configurable options $this->assertEquals(100.0, $model->getFinalPrice(1, $product)); // with configurable options $attributes = $product->getTypeInstance()->getConfigurableAttributes($product); foreach ($attributes as $attribute) { $prices = $attribute->getPrices(); $product->addCustomOption('attributes', serialize(array($attribute->getProductAttribute()->getId() => $prices[0]['value_index']))); break; } $this->assertEquals(105.0, $model->getFinalPrice(1, $product)); }
/** * return product stock availability * @param type $_product * @return type */ public function checkProductStock($_product) { $stockAvailable = true; $stockLight = $stockLightText = ''; $lowStockCutoff = (int) Mage::getStoreConfig('cataloginventory/options/stock_threshold_qty'); //Configurable product if ($_product->getTypeId() === Mage_Catalog_Model_Product_Type_Configurable::TYPE_CODE) { $stockQty = 0; foreach ($_product->getTypeInstance(true)->getUsedProducts(null, $_product) as $simple) { $stockQty += $simple->getStockItem()->getQty(); } } else { //Simple product $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product); $stockQty = $stock->getQty(); } //Bundle product if ($_product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_BUNDLE) { $bundled_product = new Mage_Catalog_Model_Product(); $bundled_product->load($_product->getId()); $selectionCollection = $bundled_product->getTypeInstance(true)->getSelectionsCollection($bundled_product->getTypeInstance(true)->getOptionsIds($bundled_product), $bundled_product); foreach ($selectionCollection as $option) { $bundleItemStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($option->product_id); $bundleStockArray[] = $bundleItemStock->getQty(); } $stockQty = min($bundleStockArray); } //Traffic Light Stock System if ($stockQty <= 0) { $stockAvailable = false; $stockLight = 'out-of-stock'; $stockLightText = 'Out Of Stock'; } elseif ($stockQty < $lowStockCutoff) { $stockLight = 'low-stock'; $stockLightText = 'Low Stock'; } else { $stockLight = 'in-stock'; $stockLightText = 'In Stock'; } return compact("stockAvailable", "stockQty", "stockLight", "stockLightText"); }
/** * @magentoConfigFixture current_store tax/weee/enable 1 * @magentoDataFixture Mage/Weee/_files/product_with_fpt.php */ public function testUpdateConfigurableProductOptions() { Mage::unregister('current_product'); $eventObserver = $this->_createEventObserverForUpdateConfigurableProductOptions(); $this->_model->updateConfigurableProductOptions($eventObserver); $this->assertEquals(array(), $eventObserver->getEvent()->getResponseObject()->getAdditionalOptions()); $product = new Mage_Catalog_Model_Product(); Mage::register('current_product', $product->load(1)); foreach (array(Mage_Weee_Model_Tax::DISPLAY_INCL, Mage_Weee_Model_Tax::DISPLAY_INCL_DESCR) as $mode) { Mage::app()->getStore()->setConfig('tax/weee/display', $mode); $eventObserver = $this->_createEventObserverForUpdateConfigurableProductOptions(); $this->_model->updateConfigurableProductOptions($eventObserver); $this->assertEquals(array('oldPlusDisposition' => 0.07000000000000001, 'plusDisposition' => 0.07000000000000001), $eventObserver->getEvent()->getResponseObject()->getAdditionalOptions()); } foreach (array(Mage_Weee_Model_Tax::DISPLAY_EXCL, Mage_Weee_Model_Tax::DISPLAY_EXCL_DESCR_INCL) as $mode) { Mage::app()->getStore()->setConfig('tax/weee/display', $mode); $eventObserver = $this->_createEventObserverForUpdateConfigurableProductOptions(); $this->_model->updateConfigurableProductOptions($eventObserver); $this->assertEquals(array('oldPlusDisposition' => 0.07000000000000001, 'plusDisposition' => 0.07000000000000001, 'exclDisposition' => true), $eventObserver->getEvent()->getResponseObject()->getAdditionalOptions()); } }
protected function _prepareCollection() { if ($this->productId != null) { $product = Mage::getModel('catalog/product')->load($this->productId); switch ($product->getTypeId()) { case 'bundle': $bundled_product = new Mage_Catalog_Model_Product(); $bundled_product->load($product->getId()); $selectionCollection = $bundled_product->getTypeInstance(true)->getSelectionsCollection($bundled_product->getTypeInstance(true)->getOptionsIds($bundled_product), $bundled_product)->addAttributeToSelect('sku')->addAttributeToSelect('mw_reward_point_sell_product')->addAttributeToSelect('name')->addAttributeToSelect('attribute_set_id')->addAttributeToSelect('type_id'); $this->setCollection($selectionCollection); parent::_prepareCollection(); break; } } else { $store = $this->_getStore(); $collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('sku')->addAttributeToSelect('mw_reward_point_sell_product')->addAttributeToSelect('name')->addAttributeToSelect('attribute_set_id')->addAttributeToSelect('type_id')->joinField('qty', 'cataloginventory/stock_item', 'qty', 'product_id=entity_id', '{{table}}.stock_id=1', 'left'); if ($store->getId()) { //$collection->setStoreId($store->getId()); $adminStore = Mage_Core_Model_App::ADMIN_STORE_ID; $collection->addStoreFilter($store); $collection->joinAttribute('name', 'catalog_product/name', 'entity_id', null, 'inner', $adminStore); $collection->joinAttribute('custom_name', 'catalog_product/name', 'entity_id', null, 'inner', $store->getId()); $collection->joinAttribute('status', 'catalog_product/status', 'entity_id', null, 'inner', $store->getId()); $collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner', $store->getId()); $collection->joinAttribute('price', 'catalog_product/price', 'entity_id', null, 'left', $store->getId()); } else { $collection->addAttributeToSelect('price'); $collection->joinAttribute('status', 'catalog_product/status', 'entity_id', null, 'inner'); $collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner'); } // $collection ->addAttributeToFilter('type_id','simple'); $this->setCollection($collection); parent::_prepareCollection(); $this->getCollection()->addWebsiteNamesToResult(); } #die(var_dump((string)$collection->getSelect())); return $this; }