From d30ccab54f2f1e3b6d309ef7333a9193356b7862 Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@users.sourceforge.net>
Date: Wed, 5 May 2010 18:08:42 +0000
Subject: [PATCH] Update unit tests

---
 htdocs/core/class/commonobject.class.php |   6 +-
 test/CommonObjectTest.php                | 199 +++++++++++++++++++++++
 test/MyTestSuite.php                     |   5 +-
 3 files changed, 208 insertions(+), 2 deletions(-)
 create mode 100644 test/CommonObjectTest.php

diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index c5f31d3f185..c3b2c215233 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -417,6 +417,8 @@ class CommonObject
 	{
 		global $conf;
 
+		if (empty($this->socid)) return 0;
+
 		$client = new Societe($this->db);
 		$result=$client->fetch($this->socid);
 		$this->client = $client;
@@ -429,10 +431,12 @@ class CommonObject
 
 	/**
 	 *		\brief      Charge le projet d'id $this->fk_project dans this->projet
-	 *		\return		int			<0 if KO, >0 if OK
+	 *		\return		int			<0 if KO, >=0 if OK
 	 */
 	function fetch_projet()
 	{
+		if (empty($this->fk_project)) return 0;
+
 		$project = new Project($this->db);
 		$result = $project->fetch($this->fk_project);
 		$this->projet = $project;
diff --git a/test/CommonObjectTest.php b/test/CommonObjectTest.php
new file mode 100644
index 00000000000..d08c3a24f92
--- /dev/null
+++ b/test/CommonObjectTest.php
@@ -0,0 +1,199 @@
+<?php
+/* Copyright (C) 2010 Laurent Destailleur  <eldy@users.sourceforge.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/**
+ *      \file       test/CommonObjectTest.php
+ *		\ingroup    test
+ *      \brief      This file is an example for a PHPUnit test
+ *      \version    $Id$
+ *		\remarks	To run this script as CLI:  phpunit filename.php
+ */
+
+global $conf,$user,$langs,$db;
+//define('TEST_DB_FORCE_TYPE','mysql');	// This is to force using mysql driver
+require_once 'PHPUnit/Framework.php';
+require_once dirname(__FILE__).'/../htdocs/master.inc.php';
+require_once dirname(__FILE__).'/../htdocs/commande/class/commande.class.php';
+require_once dirname(__FILE__).'/../htdocs/projet/class/project.class.php';
+
+if (empty($user->id))
+{
+	print "Load permissions for admin user nb 1\n";
+	$user->fetch(1);
+	$user->getrights();
+}
+
+
+/**
+ * @backupGlobals disabled
+ * @backupStaticAttributes enabled
+ * @covers DoliDb
+ * @covers User
+ * @covers Translate
+ * @covers Conf
+ * @covers Interfaces
+ * @covers CommonObject
+ * @remarks	backupGlobals must be disabled to have db,conf,user and lang not erased.
+ */
+class CommonObjectTest extends PHPUnit_Framework_TestCase
+{
+	protected $savconf;
+	protected $savuser;
+	protected $savlangs;
+	protected $savdb;
+
+	/**
+	 * Constructor
+	 * We save global variables into local variables
+	 *
+	 * @return CommonObjectTest
+	 */
+	function CommonObjectTest()
+	{
+		//$this->sharedFixture
+		global $conf,$user,$langs,$db;
+		$this->savconf=$conf;
+		$this->savuser=$user;
+		$this->savlangs=$langs;
+		$this->savdb=$db;
+
+		print __METHOD__." db->type=".$db->type." user->id=".$user->id;
+		//print " - db ".$db->db;
+		print "\n";
+	}
+
+	// Static methods
+  	public static function setUpBeforeClass()
+    {
+    	global $conf,$user,$langs,$db;
+		$db->begin();	// This is to have all actions inside a transaction even if test launched without suite.
+
+    	print __METHOD__."\n";
+    }
+    public static function tearDownAfterClass()
+    {
+    	global $conf,$user,$langs,$db;
+		$db->rollback();
+
+		print __METHOD__."\n";
+    }
+
+	/**
+	 */
+    protected function setUp()
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		print __METHOD__."\n";
+    }
+	/**
+	 */
+    protected function tearDown()
+    {
+    	print __METHOD__."\n";
+    }
+
+
+    /**
+     *
+     */
+    public function testVerifyNumRef()
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Commande($this->savdb);
+    	$result=$localobject->ref='refthatdoesnotexists';
+		$result=$localobject->VerifyNumRef();
+
+		print __METHOD__." result=".$result."\n";
+    	$this->assertEquals($result, 0);
+    	return $result;
+    }
+
+    /**
+     *
+     */
+    public function testFetchUser()
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Commande($this->savdb);
+		$localobject->fetch(1);
+
+    	$result=$localobject->fetch_user(1);
+
+		print __METHOD__." result=".$result."\n";
+    	$this->assertLessThan($localobject->user->id, 0);
+    	return $result;
+    }
+
+    /**
+     *
+     */
+    public function testFetchProjet()
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Commande($this->savdb);
+		$localobject->fetch(1);
+
+    	$result=$localobject->fetch_projet();
+
+		print __METHOD__." result=".$result."\n";
+    	$this->assertLessThanOrEqual($result,0);
+    	return $result;
+    }
+
+    /**
+     *
+     */
+    public function testFetchClient()
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Commande($this->savdb);
+		$localobject->fetch(1);
+
+    	$result=$localobject->fetch_client();
+
+		print __METHOD__." result=".$result."\n";
+    	$this->assertLessThanOrEqual($result,0);
+    	return $result;
+    }
+}
+?>
\ No newline at end of file
diff --git a/test/MyTestSuite.php b/test/MyTestSuite.php
index 5a0ad9b1c5d..dfb3571eb2c 100644
--- a/test/MyTestSuite.php
+++ b/test/MyTestSuite.php
@@ -48,7 +48,10 @@ class MyTestSuite
     {
 		$suite = new PHPUnit_Framework_TestSuite('PHPUnit Framework');
 
-		require_once dirname(__FILE__).'/AdherentTest.php';
+		require_once dirname(__FILE__).'/CommonObjectTest.php';
+        $suite->addTestSuite('CommonObjectTest');
+
+        require_once dirname(__FILE__).'/AdherentTest.php';
         $suite->addTestSuite('AdherentTest');
 		require_once dirname(__FILE__).'/CommandeTest.php';
         $suite->addTestSuite('CommandeTest');
-- 
GitLab