Index: branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getBuyLimitTest.php
===================================================================
--- branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getBuyLimitTest.php	(revision 22191)
+++ branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getBuyLimitTest.php	(revision 22191)
@@ -0,0 +1,78 @@
+<?php
+
+$HOME = realpath(dirname(__FILE__)) . "/../../..";
+require_once($HOME . "/tests/class/SC_Product/SC_Product_TestBase.php");
+/**
+ *
+ */
+class SC_Product_getBuyLimitTest extends SC_Product_TestBase {
+
+    protected function setUp() {
+        parent::setUp();
+        $this->objProducts = new SC_Product_Ex();
+    }
+
+    protected function tearDown() {
+        parent::tearDown();
+    }
+
+    /////////////////////////////////////////
+
+    public function testGetBuyLimit_商品数無限() {
+        
+        $product = array('stock_unlimited' => '1'
+                        ,'sale_limit' => null
+                        ,'stock' => null);
+        $this->expected = null;
+        $this->actual = $this->objProducts->getBuyLimit($product);
+
+        $this->verify('販売制限なし');
+    }
+    
+    public function testGetBuyLimit_商品販売数制限() {
+        
+        $product = array('stock_unlimited' => '1'
+                        ,'sale_limit' => 3
+                        ,'stock' => null);
+        $this->expected = 3;
+        $this->actual = $this->objProducts->getBuyLimit($product);
+
+        $this->verify('販売数制限');
+    }
+    
+    public function testGetBuyLimit_商品在庫数制限() {
+        
+        $product = array('stock_unlimited' => null
+                        ,'sale_limit' => null
+                        ,'stock' => 5);
+        $this->expected = 5;
+        $this->actual = $this->objProducts->getBuyLimit($product);
+
+        $this->verify('在庫数制限');
+    }
+
+    public function testGetBuyLimit_販売数大なり在庫数() {
+        
+        $product = array('stock_unlimited' => null
+                        ,'sale_limit' => 5
+                        ,'stock' => 2);
+        $this->expected = 2;
+        $this->actual = $this->objProducts->getBuyLimit($product);
+
+        $this->verify('販売数＞在庫数制限');
+    }
+    
+    public function testGetBuyLimit_販売数少なり在庫数() {
+        
+        $product = array('stock_unlimited' => null
+                        ,'sale_limit' => 5
+                        ,'stock' => 99);
+        $this->expected = 5;
+        $this->actual = $this->objProducts->getBuyLimit($product);
+
+        $this->verify('販売数＜在庫数制限');
+    }
+
+
+    
+}
Index: branches/version-2_12-dev/tests/class/SC_Product/SC_Product_listsTest.php
===================================================================
--- branches/version-2_12-dev/tests/class/SC_Product/SC_Product_listsTest.php	(revision 22191)
+++ branches/version-2_12-dev/tests/class/SC_Product/SC_Product_listsTest.php	(revision 22191)
@@ -0,0 +1,85 @@
+<?php
+
+$HOME = realpath(dirname(__FILE__)) . "/../../..";
+require_once($HOME . "/tests/class/SC_Product/SC_Product_TestBase.php");
+/**
+ *
+ */
+class SC_Product_listsTest extends SC_Product_TestBase {
+
+    protected function setUp() {
+        parent::setUp();
+        $this->objProducts = new SC_Product_Ex();
+    }
+
+    protected function tearDown() {
+        parent::tearDown();
+    }
+
+    /////////////////////////////////////////
+
+    public function testlists_商品一覧取得() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+        //更新日を取得
+        $arrRet = $this->objQuery->getCol('update_date','dtb_products', 'product_id = 1001');
+
+        $this->expected = array(
+            0 => array(
+                'product_id' => '1001'
+                ,'product_code_min' => 'code1001'
+                ,'product_code_max' => 'code1001'
+                ,'name' => '製品名1001'
+                ,'comment1' => 'コメント10011'
+                ,'comment2' => 'コメント10012'
+                ,'comment3' => 'コメント10013'
+                ,'main_list_comment' => 'リストコメント1001'
+                ,'main_image' => '1001.jpg'
+                ,'main_list_image' => '1001-main.jpg'
+                ,'price01_min' => '1500'
+                ,'price01_max' => '1500'
+                ,'price02_min' => '1500'
+                ,'price02_max' => '1500'
+                ,'stock_min' => '99'
+                ,'stock_max' => '99'
+                ,'stock_unlimited_min' => '0'
+                ,'stock_unlimited_max' => '0'
+                ,'deliv_date_id' => '1'
+                ,'status' => '1'
+                ,'del_flg' => '0'
+                ,'update_date' => $arrRet[0]
+            )
+            ,1 => array(
+                'product_id' => '1002'
+                ,'product_code_min' => 'code1002'
+                ,'product_code_max' => 'code1002'
+                ,'name' => '製品名1002'
+                ,'comment1' => 'コメント10021'
+                ,'comment2' => 'コメント10022'
+                ,'comment3' => 'コメント10023'
+                ,'main_list_comment' => 'リストコメント1002'
+                ,'main_image' => '1002.jpg'
+                ,'main_list_image' => '1002-main.jpg'
+                ,'price01_min' => null
+                ,'price01_max' => null
+                ,'price02_min' => '2500'
+                ,'price02_max' => '2500'
+                ,'stock_min' => null
+                ,'stock_max' => null
+                ,'stock_unlimited_min' => '1'
+                ,'stock_unlimited_max' => '1'
+                ,'deliv_date_id' => '2'
+                ,'status' => '2'
+                ,'del_flg' => '0'
+                ,'update_date' => $arrRet[0]
+
+            )
+        );
+
+        $this->actual = $this->objProducts->lists($this->objQuery);
+
+        $this->verify('商品一覧');
+    }
+    
+}
Index: branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getDetailAndProductsClassTest.php
===================================================================
--- branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getDetailAndProductsClassTest.php	(revision 22191)
+++ branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getDetailAndProductsClassTest.php	(revision 22191)
@@ -0,0 +1,120 @@
+<?php
+
+$HOME = realpath(dirname(__FILE__)) . "/../../..";
+require_once($HOME . "/tests/class/SC_Product/SC_Product_TestBase.php");
+/**
+ *
+ */
+class SC_Product_getDetailAndProductsClassTest extends SC_Product_TestBase {
+
+    protected function setUp() {
+        parent::setUp();
+        $this->objProducts = new SC_Product_Ex();
+    }
+
+    protected function tearDown() {
+        parent::tearDown();
+    }
+
+    /////////////////////////////////////////
+
+    public function testGetDetailAndProductsClass_商品規格ID指定() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+        
+        //更新日を取得
+        $arrRet = $this->objQuery->getCol('update_date','dtb_products', 'product_id = 1001');
+
+        $this->expected = array(
+                'product_id' => '1001'
+                ,'product_code_min' => 'code1001'
+                ,'product_code_max' => 'code1001'
+                ,'name' => '製品名1001'
+                ,'comment1' => 'コメント10011'
+                ,'comment2' => 'コメント10012'
+                ,'comment3' => 'コメント10013'
+                ,'main_list_comment' => 'リストコメント1001'
+                ,'main_image' => '1001.jpg'
+                ,'main_list_image' => '1001-main.jpg'
+                ,'price01_min' => '1500'
+                ,'price01_max' => '1500'
+                ,'price02_min' => '1500'
+                ,'price02_max' => '1500'
+                ,'stock_min' => '99'
+                ,'stock_max' => '99'
+                ,'stock_unlimited_min' => '0'
+                ,'stock_unlimited_max' => '0'
+                ,'deliv_date_id' => '1'
+                ,'status' => '1'
+                ,'del_flg' => '0'
+                ,'update_date' => $arrRet[0]
+                ,'price01_min_inctax' => SC_Helper_DB::sfCalcIncTax('1500')
+                ,'price01_max_inctax' => SC_Helper_DB::sfCalcIncTax('1500')
+                ,'price02_min_inctax' => SC_Helper_DB::sfCalcIncTax('1500')
+                ,'price02_max_inctax' => SC_Helper_DB::sfCalcIncTax('1500')
+                ,'maker_id' => null
+                ,'comment4' => null
+                ,'comment5' => null
+                ,'comment6' => null
+                ,'note' => null
+                ,'main_comment' => 'メインコメント1001'
+                ,'main_large_image' => null
+                ,'sub_title1' => null
+                ,'sub_comment1' => null
+                ,'sub_image1' => null
+                ,'sub_large_image1' => null
+                ,'sub_title2' => null
+                ,'sub_comment2' => null
+                ,'sub_image2' => null
+                ,'sub_large_image2' => null
+                ,'sub_title3' => null
+                ,'sub_comment3' => null
+                ,'sub_image3' => null
+                ,'sub_large_image3' => null
+                ,'sub_title4' => null
+                ,'sub_comment4' => null
+                ,'sub_image4' => null
+                ,'sub_large_image4' => null
+                ,'sub_title5' => null
+                ,'sub_comment5' => null
+                ,'sub_image5' => null
+                ,'sub_large_image5' => null
+                ,'sub_title6' => null
+                ,'sub_comment6' => null
+                ,'sub_image6' => null
+                ,'sub_large_image6' => null
+                ,'creator_id' => '1'
+                ,'create_date' => $arrRet[0]
+                ,'point_rate' => '0'
+                ,'deliv_fee' => null
+                ,'class_count' => '1'
+                ,'maker_name' => null
+                ,'stock' => '99'
+                ,'stock_unlimited' => '0'
+                ,'sale_limit' => null
+                ,'price01' => '1500'
+                ,'price02' => '1500'
+                ,'product_code' => 'code1001'
+                ,'product_class_id' => '1001'
+                ,'product_type_id' => '1'
+                ,'down_filename' => null
+                ,'down_realfilename' => null
+                ,'classcategory_name1' => 'cat1001'
+                ,'rank1' => null
+                ,'class_name1' => '味'
+                ,'class_id1' => '1'
+                ,'classcategory_id1' => '1001'
+                ,'classcategory_id2' => '1002'
+                ,'classcategory_name2' => 'cat1002'
+                ,'rank2' => null
+                ,'class_name2' => '味'
+                ,'class_id2' => '1'
+        );
+
+        $this->actual = $this->objProducts->getDetailAndProductsClass('1001');
+
+        $this->verify('商品詳細＋規格');
+    }
+    
+}
Index: branches/version-2_12-dev/tests/class/SC_Product/SC_Product_setProductStatusTest.php
===================================================================
--- branches/version-2_12-dev/tests/class/SC_Product/SC_Product_setProductStatusTest.php	(revision 22191)
+++ branches/version-2_12-dev/tests/class/SC_Product/SC_Product_setProductStatusTest.php	(revision 22191)
@@ -0,0 +1,36 @@
+<?php
+
+$HOME = realpath(dirname(__FILE__)) . "/../../..";
+require_once($HOME . "/tests/class/SC_Product/SC_Product_TestBase.php");
+/**
+ *
+ */
+class SC_Product_setProductStatusTest extends SC_Product_TestBase {
+
+    protected function setUp() {
+        parent::setUp();
+        $this->objProducts = new SC_Product_Ex();
+    }
+
+    protected function tearDown() {
+        parent::tearDown();
+    }
+
+    /////////////////////////////////////////
+
+    public function testSetProductStatus_商品ステータス登録() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+        $this->setUpProductStatus();
+        
+        $this->objProducts->setProductStatus('1001', array('2','3','4'));
+
+        $this->expected = array('1001'=>array('2','3','4'));
+        $productIds = array('1001');
+        $this->actual = $this->objProducts->getProductStatus($productIds);
+
+        $this->verify('商品ステータスの更新');
+    }
+    
+}
Index: branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getDetailTest.php
===================================================================
--- branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getDetailTest.php	(revision 22191)
+++ branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getDetailTest.php	(revision 22191)
@@ -0,0 +1,100 @@
+<?php
+
+$HOME = realpath(dirname(__FILE__)) . "/../../..";
+require_once($HOME . "/tests/class/SC_Product/SC_Product_TestBase.php");
+/**
+ *
+ */
+class SC_Product_getDetailTest extends SC_Product_TestBase {
+
+    protected function setUp() {
+        parent::setUp();
+        $this->objProducts = new SC_Product_Ex();
+    }
+
+    protected function tearDown() {
+        parent::tearDown();
+    }
+
+    /////////////////////////////////////////
+
+    public function testGetDetail_商品ID指定() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+        
+        //更新日を取得
+        $arrRet = $this->objQuery->getCol('update_date','dtb_products', 'product_id = 1001');
+
+        $this->expected = array(
+                'product_id' => '1001'
+                ,'product_code_min' => 'code1001'
+                ,'product_code_max' => 'code1001'
+                ,'name' => '製品名1001'
+                ,'comment1' => 'コメント10011'
+                ,'comment2' => 'コメント10012'
+                ,'comment3' => 'コメント10013'
+                ,'main_list_comment' => 'リストコメント1001'
+                ,'main_image' => '1001.jpg'
+                ,'main_list_image' => '1001-main.jpg'
+                ,'price01_min' => '1500'
+                ,'price01_max' => '1500'
+                ,'price02_min' => '1500'
+                ,'price02_max' => '1500'
+                ,'stock_min' => '99'
+                ,'stock_max' => '99'
+                ,'stock_unlimited_min' => '0'
+                ,'stock_unlimited_max' => '0'
+                ,'deliv_date_id' => '1'
+                ,'status' => '1'
+                ,'del_flg' => '0'
+                ,'update_date' => $arrRet[0]
+                ,'price01_min_inctax' => SC_Helper_DB::sfCalcIncTax('1500')
+                ,'price01_max_inctax' => SC_Helper_DB::sfCalcIncTax('1500')
+                ,'price02_min_inctax' => SC_Helper_DB::sfCalcIncTax('1500')
+                ,'price02_max_inctax' => SC_Helper_DB::sfCalcIncTax('1500')
+                ,'maker_id' => null
+                ,'comment4' => null
+                ,'comment5' => null
+                ,'comment6' => null
+                ,'note' => null
+                ,'main_comment' => 'メインコメント1001'
+                ,'main_large_image' => null
+                ,'sub_title1' => null
+                ,'sub_comment1' => null
+                ,'sub_image1' => null
+                ,'sub_large_image1' => null
+                ,'sub_title2' => null
+                ,'sub_comment2' => null
+                ,'sub_image2' => null
+                ,'sub_large_image2' => null
+                ,'sub_title3' => null
+                ,'sub_comment3' => null
+                ,'sub_image3' => null
+                ,'sub_large_image3' => null
+                ,'sub_title4' => null
+                ,'sub_comment4' => null
+                ,'sub_image4' => null
+                ,'sub_large_image4' => null
+                ,'sub_title5' => null
+                ,'sub_comment5' => null
+                ,'sub_image5' => null
+                ,'sub_large_image5' => null
+                ,'sub_title6' => null
+                ,'sub_comment6' => null
+                ,'sub_image6' => null
+                ,'sub_large_image6' => null
+                ,'creator_id' => '1'
+                ,'create_date' => $arrRet[0]
+                ,'point_rate' => '0'
+                ,'deliv_fee' => null
+                ,'class_count' => '1'
+                ,'maker_name' => null
+        );
+
+        $this->actual = $this->objProducts->getDetail('1001');
+
+        $this->verify('商品詳細');
+    }
+    
+}
Index: branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getProductStatusTest.php
===================================================================
--- branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getProductStatusTest.php	(revision 22191)
+++ branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getProductStatusTest.php	(revision 22191)
@@ -0,0 +1,50 @@
+<?php
+
+$HOME = realpath(dirname(__FILE__)) . "/../../..";
+require_once($HOME . "/tests/class/SC_Product/SC_Product_TestBase.php");
+/**
+ *
+ */
+class SC_Product_getProductStatusTest extends SC_Product_TestBase {
+
+    protected function setUp() {
+        parent::setUp();
+        $this->objProducts = new SC_Product_Ex();
+    }
+
+    protected function tearDown() {
+        parent::tearDown();
+    }
+
+    /////////////////////////////////////////
+
+    public function testGetProductStatus_商品ID指定なし() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+        $this->setUpProductStatus();
+
+        $this->expected = array();
+        $productIds = null;
+
+        $this->actual = $this->objProducts->getProductStatus($productIds);
+
+        $this->verify('空の配列');
+    }
+    
+    public function testGetProductStatus_商品ID指定() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+        $this->setUpProductStatus();
+
+        $this->expected = array('1001' => array('1'));
+        $productIds = array('1001');
+
+        $this->actual = $this->objProducts->getProductStatus($productIds);
+
+        $this->verify('商品ステータス');
+    }
+    
+    
+}
Index: branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getProductsClassByProductIdsTest.php
===================================================================
--- branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getProductsClassByProductIdsTest.php	(revision 22191)
+++ branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getProductsClassByProductIdsTest.php	(revision 22191)
@@ -0,0 +1,141 @@
+<?php
+
+$HOME = realpath(dirname(__FILE__)) . "/../../..";
+require_once($HOME . "/tests/class/SC_Product/SC_Product_TestBase.php");
+/**
+ *
+ */
+class SC_Product_getProductsClassByProductIdsTest extends SC_Product_TestBase {
+
+    protected function setUp() {
+        parent::setUp();
+        $this->objProducts = new SC_Product_Ex();
+    }
+
+    protected function tearDown() {
+        parent::tearDown();
+    }
+
+    /////////////////////////////////////////
+
+    public function testGetProductsClassByProductIds_商品IDなし() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+
+        $this->expected = array();
+        
+        $productIds = array();
+
+        $this->actual = $this->objProducts->getProductsClassByProductIds($productIds);
+
+        $this->verify('商品ID指定なし');
+    }
+    
+    public function testGetProductsClassByProductIds_商品ID指定() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+
+        $this->expected = array(
+            0=> array(
+                'product_id' => '1001'
+                ,'del_flg' => '0'
+                ,'point_rate' => '0'
+                ,'stock' => '99'
+                ,'stock_unlimited' => '0'
+                ,'sale_limit' => null
+                ,'price01' => '1500'
+                ,'price02' => '1500'
+                ,'product_code' => 'code1001'
+                ,'product_class_id' => '1001'
+                ,'product_type_id' => '1'
+                ,'down_filename' => null
+                ,'down_realfilename' => null
+                ,'classcategory_name1' => 'cat1001'
+                ,'rank1' => null
+                ,'class_name1' => '味'
+                ,'class_id1' => '1'
+                ,'classcategory_id1' => '1001'
+                ,'classcategory_id2' => '1002'
+                ,'classcategory_name2' => 'cat1002'
+                ,'rank2' => null
+                ,'class_name2' => '味'
+                ,'class_id2' => '1'
+            )
+        );
+        
+        $productIds = array('1001','2001');
+
+        $this->actual = $this->objProducts->getProductsClassByProductIds($productIds);
+
+        $this->verify('商品ID指定');
+    }
+    
+    public function testGetProductsClassByProductIds_削除商品含む() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+
+        $this->expected = array(
+            0=> array(
+                'product_id' => '1001'
+                ,'del_flg' => '0'
+                ,'point_rate' => '0'
+                ,'stock' => '99'
+                ,'stock_unlimited' => '0'
+                ,'sale_limit' => null
+                ,'price01' => '1500'
+                ,'price02' => '1500'
+                ,'product_code' => 'code1001'
+                ,'product_class_id' => '1001'
+                ,'product_type_id' => '1'
+                ,'down_filename' => null
+                ,'down_realfilename' => null
+                ,'classcategory_name1' => 'cat1001'
+                ,'rank1' => null
+                ,'class_name1' => '味'
+                ,'class_id1' => '1'
+                ,'classcategory_id1' => '1001'
+                ,'classcategory_id2' => '1002'
+                ,'classcategory_name2' => 'cat1002'
+                ,'rank2' => null
+                ,'class_name2' => '味'
+                ,'class_id2' => '1'
+            ),
+            1=> array(
+                'product_id' => '2001'
+                ,'del_flg' => '1'
+                ,'point_rate' => '0'
+                ,'stock' => null
+                ,'stock_unlimited' => '1'
+                ,'sale_limit' => null
+                ,'price01' => null
+                ,'price02' => '2000'
+                ,'product_code' => 'code2001'
+                ,'product_class_id' => '2001'
+                ,'product_type_id' => '1'
+                ,'down_filename' => null
+                ,'down_realfilename' => null
+                ,'classcategory_name1' => null
+                ,'rank1' => null
+                ,'class_name1' => null
+                ,'class_id1' => null
+                ,'classcategory_id1' => '0'
+                ,'classcategory_id2' => '0'
+                ,'classcategory_name2' => null
+                ,'rank2' => null
+                ,'class_name2' => null
+                ,'class_id2' => null
+            )
+        );
+        
+        $productIds = array('1001','2001');
+
+        $this->actual = $this->objProducts->getProductsClassByProductIds($productIds,true);
+
+        $this->verify('商品ID指定');
+    }
+    
+    
+}
Index: branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getListByProductIdsTest.php
===================================================================
--- branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getListByProductIdsTest.php	(revision 22191)
+++ branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getListByProductIdsTest.php	(revision 22191)
@@ -0,0 +1,77 @@
+<?php
+
+$HOME = realpath(dirname(__FILE__)) . "/../../..";
+require_once($HOME . "/tests/class/SC_Product/SC_Product_TestBase.php");
+/**
+ *
+ */
+class SC_Product_getListsByProductIdsTest extends SC_Product_TestBase {
+
+    protected function setUp() {
+        parent::setUp();
+        $this->objProducts = new SC_Product_Ex();
+    }
+
+    protected function tearDown() {
+        parent::tearDown();
+    }
+
+    /////////////////////////////////////////
+
+    public function testgetListByProductIds_商品ID指定なし() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+
+        $this->expected = array();
+
+        $this->actual = $this->objProducts->getListByProductIds($this->objQuery);
+
+        $this->verify('商品ID指定なし');
+    }
+    
+    public function testgetListByProductIds_商品ID指定() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+        
+        $arrProductId = array('1001');
+        //更新日を取得
+        $arrRet = $this->objQuery->getCol('update_date','dtb_products', 'product_id = 1001');
+
+        $this->expected = array(
+            '1001' => array(
+                'product_id' => '1001'
+                ,'product_code_min' => 'code1001'
+                ,'product_code_max' => 'code1001'
+                ,'name' => '製品名1001'
+                ,'comment1' => 'コメント10011'
+                ,'comment2' => 'コメント10012'
+                ,'comment3' => 'コメント10013'
+                ,'main_list_comment' => 'リストコメント1001'
+                ,'main_image' => '1001.jpg'
+                ,'main_list_image' => '1001-main.jpg'
+                ,'price01_min' => '1500'
+                ,'price01_max' => '1500'
+                ,'price02_min' => '1500'
+                ,'price02_max' => '1500'
+                ,'stock_min' => '99'
+                ,'stock_max' => '99'
+                ,'stock_unlimited_min' => '0'
+                ,'stock_unlimited_max' => '0'
+                ,'deliv_date_id' => '1'
+                ,'status' => '1'
+                ,'del_flg' => '0'
+                ,'update_date' => $arrRet[0]
+                ,'price01_min_inctax' => SC_Helper_DB::sfCalcIncTax('1500')
+                ,'price01_max_inctax' => SC_Helper_DB::sfCalcIncTax('1500')
+                ,'price02_min_inctax' => SC_Helper_DB::sfCalcIncTax('1500')
+                ,'price02_max_inctax' => SC_Helper_DB::sfCalcIncTax('1500')
+            )
+        );
+
+        $this->actual = $this->objProducts->getListByProductIds($this->objQuery, $arrProductId);
+
+        $this->verify('商品ID指定');
+    }
+}
Index: branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getProductsClassTest.php
===================================================================
--- branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getProductsClassTest.php	(revision 22191)
+++ branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getProductsClassTest.php	(revision 22191)
@@ -0,0 +1,57 @@
+<?php
+
+$HOME = realpath(dirname(__FILE__)) . "/../../..";
+require_once($HOME . "/tests/class/SC_Product/SC_Product_TestBase.php");
+/**
+ *
+ */
+class SC_Product_getProductsClassTest extends SC_Product_TestBase {
+
+    protected function setUp() {
+        parent::setUp();
+        $this->objProducts = new SC_Product_Ex();
+    }
+
+    protected function tearDown() {
+        parent::tearDown();
+    }
+
+    /////////////////////////////////////////
+
+    public function testGetProductsClass_商品規格ID指定() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+        
+        $this->expected = array(
+                'product_id' => '1001'
+                ,'del_flg' => '0'
+                ,'point_rate' => '0'
+                ,'stock' => '99'
+                ,'stock_unlimited' => '0'
+                ,'sale_limit' => null
+                ,'price01' => '1500'
+                ,'price02' => '1500'
+                ,'product_code' => 'code1001'
+                ,'product_class_id' => '1001'
+                ,'product_type_id' => '1'
+                ,'down_filename' => null
+                ,'down_realfilename' => null
+                ,'classcategory_name1' => 'cat1001'
+                ,'rank1' => null
+                ,'class_name1' => '味'
+                ,'class_id1' => '1'
+                ,'classcategory_id1' => '1001'
+                ,'classcategory_id2' => '1002'
+                ,'classcategory_name2' => 'cat1002'
+                ,'rank2' => null
+                ,'class_name2' => '味'
+                ,'class_id2' => '1'
+        );
+
+        $this->actual = $this->objProducts->getProductsClass('1001');
+
+        $this->verify('商品規格');
+    }
+    
+}
Index: branches/version-2_12-dev/tests/class/SC_Product/SC_Product_findProductCountTest.php
===================================================================
--- branches/version-2_12-dev/tests/class/SC_Product/SC_Product_findProductCountTest.php	(revision 22191)
+++ branches/version-2_12-dev/tests/class/SC_Product/SC_Product_findProductCountTest.php	(revision 22191)
@@ -0,0 +1,48 @@
+<?php
+
+$HOME = realpath(dirname(__FILE__)) . "/../../..";
+require_once($HOME . "/tests/class/SC_Product/SC_Product_TestBase.php");
+/**
+ *
+ */
+class SC_Product_findProductCountTest extends SC_Product_TestBase {
+
+    protected function setUp() {
+        parent::setUp();
+        $this->objProducts = new SC_Product_Ex();
+    }
+
+    protected function tearDown() {
+        parent::tearDown();
+    }
+
+    /////////////////////////////////////////
+
+    public function testFindProductCount_検索なし() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+
+        $this->expected = 3;
+
+        $this->actual = $this->objProducts->findProductCount($this->objQuery);
+
+        $this->verify('商品数');
+    }
+    
+    public function testFindProductCount_検索条件あり() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+        
+        $this->objQuery->setWhere('product_id = ?');
+        $arrVal = array(1001);
+
+        $this->expected = 1;
+
+        $this->actual = $this->objProducts->findProductCount($this->objQuery, $arrVal);
+
+        $this->verify('検索商品数');
+    }
+    
+}
Index: branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getProductsClassByQueryTest.php
===================================================================
--- branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getProductsClassByQueryTest.php	(revision 22191)
+++ branches/version-2_12-dev/tests/class/SC_Product/SC_Product_getProductsClassByQueryTest.php	(revision 22191)
@@ -0,0 +1,60 @@
+<?php
+
+$HOME = realpath(dirname(__FILE__)) . "/../../..";
+require_once($HOME . "/tests/class/SC_Product/SC_Product_TestBase.php");
+/**
+ *
+ */
+class SC_Product_getProductsClassByQueryTest extends SC_Product_TestBase {
+
+    protected function setUp() {
+        parent::setUp();
+        $this->objProducts = new SC_Product_Ex();
+    }
+
+    protected function tearDown() {
+        parent::tearDown();
+    }
+
+    /////////////////////////////////////////
+
+    public function testGetProductsClassByQuery_商品ID指定() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+
+        $this->expected = array(
+            0=> array(
+                'product_id' => '1001'
+                ,'del_flg' => '0'
+                ,'point_rate' => '0'
+                ,'stock' => '99'
+                ,'stock_unlimited' => '0'
+                ,'sale_limit' => null
+                ,'price01' => '1500'
+                ,'price02' => '1500'
+                ,'product_code' => 'code1001'
+                ,'product_class_id' => '1001'
+                ,'product_type_id' => '1'
+                ,'down_filename' => null
+                ,'down_realfilename' => null
+                ,'classcategory_name1' => 'cat1001'
+                ,'rank1' => null
+                ,'class_name1' => '味'
+                ,'class_id1' => '1'
+                ,'classcategory_id1' => '1001'
+                ,'classcategory_id2' => '1002'
+                ,'classcategory_name2' => 'cat1002'
+                ,'rank2' => null
+                ,'class_name2' => '味'
+                ,'class_id2' => '1'
+            )
+        );
+        $this->objQuery->setWhere('product_id = ?');
+
+        $this->actual = $this->objProducts->getProductsClassByQuery($this->objQuery, array('1001'));
+
+        $this->verify('商品情報クエリ');
+    }
+    
+}
Index: branches/version-2_12-dev/tests/class/SC_Product/SC_Product_reduceStockTest.php
===================================================================
--- branches/version-2_12-dev/tests/class/SC_Product/SC_Product_reduceStockTest.php	(revision 22191)
+++ branches/version-2_12-dev/tests/class/SC_Product/SC_Product_reduceStockTest.php	(revision 22191)
@@ -0,0 +1,73 @@
+<?php
+
+$HOME = realpath(dirname(__FILE__)) . "/../../..";
+require_once($HOME . "/tests/class/SC_Product/SC_Product_TestBase.php");
+/**
+ *
+ */
+class SC_Product_reduceStockTest extends SC_Product_TestBase {
+
+    protected function setUp() {
+        parent::setUp();
+        $this->objProducts = new SC_Product_Ex();
+    }
+
+    protected function tearDown() {
+        parent::tearDown();
+    }
+
+    /////////////////////////////////////////
+
+    public function testReduceStock_減少数０() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+        
+        $productClassId = '1001';
+        $quantity = '0';
+        $this->expected = false;
+        $this->actual = $this->objProducts->reduceStock($productClassId, $quantity);
+
+        $this->verify('減少数０');
+    }
+    
+    public function testReduceStock_減少数1() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+        
+        $productClassId = '1001';
+        $quantity = '1';
+        $this->expected = true;
+        $this->actual = $this->objProducts->reduceStock($productClassId, $quantity);
+
+        $this->verify('減少数1');
+    }
+    
+    public function testReduceStock_在庫数をマイナスにする() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+        
+        $productClassId = '1001';
+        $quantity = '100';
+        $this->expected = false;
+        $this->actual = $this->objProducts->reduceStock($productClassId, $quantity);
+
+        $this->verify('在庫数マイナス');
+    }
+    
+        
+    public function testReduceStock_在庫数無限の場合() {
+        $this->setUpProductClass();
+        $this->setUpProducts();
+        $this->setUpClassCategory();
+        
+        $productClassId = '1002';
+        $quantity = '100';
+        $this->expected = true;
+        $this->actual = $this->objProducts->reduceStock($productClassId, $quantity);
+
+        $this->verify('在庫数無限');
+    }
+}
