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);
 }
Exemple #2
0
 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);
 }
Exemple #3
0
 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');
 }
Exemple #4
0
 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();
 }
Exemple #5
0
 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);
 }
Exemple #6
0
 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());
 }
Exemple #8
0
 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');
 }
Exemple #11
0
 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'];
 }
Exemple #13
0
 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);
 }
Exemple #14
0
 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));
 }
Exemple #15
0
 /**
  * @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());
 }
Exemple #16
0
 /**
  * @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));
 }
Exemple #18
0
 /**
  * @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);
 }
Exemple #20
0
 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;
 }
Exemple #21
0
 /**
  * @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()));
 }
Exemple #22
0
 /**
  * @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());
 }
Exemple #23
0
 /**
  * @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;
 }
Exemple #25
0
 /**
  * @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'));
 }
Exemple #26
0
 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());
 }
Exemple #27
0
 /**
  * @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");
 }
Exemple #29
0
 /**
  * @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());
     }
 }
Exemple #30
0
 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;
 }