public function setUpOnce()
 {
     ini_set('memory_limit', '256M');
     //		error_reporting(E_ALL);
     $p = singleton('Product');
     if (!$p->hasExtension('CanAddToWishList')) {
         Product::add_extension('CanAddToWishList');
     }
 }
 public function testDiscountRoundingError()
 {
     // This extension adds a fractional discount, which could cause
     // the displayed unit price not to match the charged price at
     // large quantities.
     Product::add_extension('ProductTest_FractionalDiscountExtension');
     DataObject::flush_and_destroy_cache();
     $tshirt = Product::get()->byID($this->tshirt->ID);
     Config::inst()->update('Order', 'rounding_precision', 2);
     $this->assertEquals(24.99, $tshirt->sellingPrice());
     Config::inst()->update('Order', 'rounding_precision', 3);
     $this->assertEquals(24.985, $tshirt->sellingPrice());
     Product::remove_extension('ProductTest_FractionalDiscountExtension');
 }
 public function setUpOnce()
 {
     // normalize the configuration
     Config::inst()->update('ShopSearch', 'buyables_are_searchable', false);
     Config::inst()->remove('ShopSearch', 'searchable');
     Config::inst()->update('ShopSearch', 'searchable', array('Product'));
     Config::inst()->update('ShopSearch', 'adapter_class', 'ShopSearchSimple');
     Config::inst()->remove('Product', 'searchable_fields');
     Config::inst()->update('Product', 'searchable_fields', array('Title', 'Content'));
     Config::inst()->remove('Product', 'default_attributes');
     Config::inst()->remove('ShopSearch', 'facets');
     Config::inst()->update('FacetHelper', 'sort_facet_values', true);
     Config::inst()->update('FacetHelper', 'faster_faceting', false);
     $p = singleton('Product');
     if (!$p->hasExtension('VirtualFieldIndex')) {
         Product::add_extension('VirtualFieldIndex');
     }
     Config::inst()->remove('VirtualFieldIndex', 'vfi_spec');
     Config::inst()->update('VirtualFieldIndex', 'vfi_spec', array('Product' => array('Price2' => 'sellingPrice', 'Price' => array('Source' => 'sellingPrice', 'DBField' => 'Currency', 'DependsOn' => 'BasePrice'), 'Category' => array('Parent', 'ProductCategories'))));
     if (!$p->hasExtension('HasStaticAttributes')) {
         Product::add_extension('HasStaticAttributes');
     }
     parent::setUpOnce();
 }
<?php

Product::add_extension("ProductEnquiryDecorator");
Product_Controller::add_extension("ProductControllerEnquiryDecorator");
OrderItem::add_extension("EnquiryOrderItem");
<?php

// Extentions
SiteConfig::add_extension('Ext_Commerce_SiteConfig');
Image::add_extension('Ext_Commerce_Image');
Controller::add_extension('Ext_Commerce_Controller');
Group::add_extension('Ext_Commerce_Group');
Member::add_extension('Ext_Commerce_Member');
if (class_exists('Users_Account_Controller')) {
    Users_Account_Controller::add_extension('Ext_Commerce_UsersController');
}
// If subsites is installed
if (class_exists('Subsite')) {
    Product::add_extension('Ext_Subsites_CommerceObject');
    ProductCategory::add_extension('Ext_Subsites_CommerceObject');
    Order::add_extension('Ext_Subsites_CommerceObject');
    CatalogueAdmin::add_extension('SubsiteMenuExtension');
    LocaliseAdmin::add_extension('SubsiteMenuExtension');
    OrderAdmin::add_extension('SubsiteMenuExtension');
}
LeftAndMain::add_extension('Ext_Commerce_LeftAndMain');
// Setup google sitemaps
if (class_exists("GoogleSitemap")) {
    GoogleSitemap::register_dataobject('Product');
    GoogleSitemap::register_dataobject('ProductCategory');
}