diff --git a/test/.cvsignore b/test/.cvsignore
new file mode 100644
index 0000000000000000000000000000000000000000..05c319264387a6c782f10c5e27e602ee36f98d0f
--- /dev/null
+++ b/test/.cvsignore
@@ -0,0 +1 @@
+report
diff --git a/test/CommandeTest.php b/test/CommandeTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..5e22e62e4ad638737c9e4594db918114b0c8d2fe
--- /dev/null
+++ b/test/CommandeTest.php
@@ -0,0 +1,219 @@
+<?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/CommandeTest.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/commande.class.php';
+
+print "Load permissions for admin user with login 'admin'\n";
+$user->fetch('admin');
+$user->getrights();
+
+
+/**
+ * @backupGlobals enabled
+ * @backupStaticAttributes enabled
+ */
+class CommandeTest extends PHPUnit_Framework_TestCase
+{
+	protected $savconf;
+	protected $savuser;
+	protected $savlangs;
+	protected $savdb;
+
+	/**
+	 * Constructor
+	 * We save global variables into local variables
+	 *
+	 * @return CommandeTest
+	 */
+	function CommandeTest()
+	{
+		//$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;
+
+    	print __METHOD__."\n";
+		if (! $db->transaction_opened) $db->begin();	// This is to have all actions inside a transaction even if test launched without suite.
+    }
+    public static function tearDownAfterClass()
+    {
+    	global $conf,$user,$langs,$db;
+
+		print __METHOD__."\n";
+    }
+
+	/**
+	 * @backupGlobals enabled
+	 * @backupStaticAttributes enabled
+	 */
+    protected function setUp()
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		print __METHOD__."\n";
+		//print $db->getVersion()."\n";
+    }
+	/**
+	 * @backupGlobals enabled
+	 * @backupStaticAttributes enabled
+	 */
+    protected function tearDown()
+    {
+    	print __METHOD__."\n";
+    }
+
+    /**
+     * @backupGlobals enabled
+ 	 * @backupStaticAttributes enabled
+     * @covers Commande::create
+     */
+    public function testCommandeCreate()
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Commande($this->savdb);
+    	$localobject->initAsSpecimen();
+    	$result=$localobject->create($user);
+
+    	$this->assertLessThan($result, 0);
+    	print __METHOD__." result=".$result."\n";
+    	return $result;
+    }
+
+    /**
+     * @backupGlobals enabled
+     * @backupStaticAttributes enabled
+     * @depends	testCommandeCreate
+     * @covers Commande::fetch
+     * The depends says test is run only if previous is ok
+     */
+    public function testCommandeFetch($id)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Commande($this->savdb);
+    	$result=$localobject->fetch($id);
+    	$this->assertLessThan($result, 0);
+    	print __METHOD__." id=".$id." result=".$result."\n";
+    	return $localobject;
+    }
+
+    /**
+     * @backupGlobals enabled
+     * @backupStaticAttributes enabled
+     * @depends	testCommandeFetch
+     * @covers Commande::update
+     * The depends says test is run only if previous is ok
+     */
+/*    public function testCommandeUpdate($localobject)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject->note='New note after update';
+    	$result=$localobject->update($user);
+    	print __METHOD__." id=".$localobject->id." result=".$result."\n";
+    	$this->assertLessThan($result, 0);
+    	return $localobject->id;
+    }
+*/
+    /**
+     * @backupGlobals enabled
+     * @backupStaticAttributes enabled
+     * @depends	testCommandeFetch
+     * @covers Commande::valid
+     * The depends says test is run only if previous is ok
+     */
+    public function testCommandeValid($localobject)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+    	$result=$localobject->valid($user);
+    	print __METHOD__." id=".$localobject->id." result=".$result."\n";
+    	$this->assertLessThan($result, 0);
+    	return $localobject->id;
+    }
+
+    /**
+     * @backupGlobals enabled
+     * @backupStaticAttributes enabled
+     * @depends	testCommandeValid
+     * @covers Commande::delete
+     * The depends says test is run only if previous is ok
+     */
+    public function testCommandeDelete($id)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Commande($this->savdb);
+    	$result=$localobject->fetch($id);
+		$result=$localobject->delete($user);
+    	print __METHOD__." id=".$id." result=".$result."\n";
+    	$this->assertLessThan($result, 0);
+    	return $result;
+    }
+
+
+}
+?>
\ No newline at end of file
diff --git a/test/FactureTest.php b/test/FactureTest.php
index 89b01092dcfd18cd7b66ef95bd4bd0baf7f4d1e0..47046225219512fced268b6bf6f6643dcf2a7afb 100644
--- a/test/FactureTest.php
+++ b/test/FactureTest.php
@@ -23,14 +23,23 @@
  *      \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/compta/facture/class/facture.class.php';
 
+print "Load permissions for admin user with login 'admin'\n";
+$user->fetch('admin');
+$user->getrights();
+
+
 /**
  * @backupGlobals enabled
  * @backupStaticAttributes enabled
+ * @covers DoliDb
+ * @covers User
+ * @covers Translate
  */
 class FactureTest extends PHPUnit_Framework_TestCase
 {
@@ -87,7 +96,6 @@ class FactureTest extends PHPUnit_Framework_TestCase
 		$db=$this->savdb;
 
 		print __METHOD__."\n";
-		//print $db->getVersion()."\n";
     }
 	/**
 	 * @backupGlobals enabled
@@ -158,10 +166,56 @@ class FactureTest extends PHPUnit_Framework_TestCase
 		$db=$this->savdb;
 
 		$localobject->note='New note after update';
-    	$result=$localobject->update();
+    	$result=$localobject->update($user);
+    	print __METHOD__." id=".$localobject->id." result=".$result."\n";
+    	$this->assertLessThan($result, 0);
+    	return $localobject;
+    }
+
+    /**
+     * @backupGlobals enabled
+     * @backupStaticAttributes enabled
+     * @depends	testFactureUpdate
+     * @covers Facture::set_valid
+     * The depends says test is run only if previous is ok
+     */
+    public function testFactureValid($localobject)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+    	$result=$localobject->set_valid($user);
     	print __METHOD__." id=".$localobject->id." result=".$result."\n";
     	$this->assertLessThan($result, 0);
+    	return $localobject->id;
+    }
+
+/**
+     * @backupGlobals enabled
+     * @backupStaticAttributes enabled
+     * @depends	testFactureValid
+     * @covers Facture::delete
+     * The depends says test is run only if previous is ok
+     */
+    public function testFactureDelete($id)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Facture($this->savdb);
+    	$result=$localobject->fetch($id);
+		$result=$localobject->delete($id);
+    	print __METHOD__." id=".$id." result=".$result."\n";
+    	$this->assertLessThan($result, 0);
     	return $result;
     }
+
+
 }
 ?>
\ No newline at end of file
diff --git a/test/MyTestSuite.php b/test/MyTestSuite.php
index f61fd120cf0604530ba4be1ad7561c7add4662b3..45719a2daaef29bd84d251ad7d2864abdebb8485 100644
--- a/test/MyTestSuite.php
+++ b/test/MyTestSuite.php
@@ -1,74 +1,32 @@
 <?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/FactureTestSuite.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;
 require_once 'PHPUnit/Framework.php';
+
 require_once dirname(__FILE__).'/../htdocs/master.inc.php';
 require_once dirname(__FILE__).'/FactureTest.php';
+require_once dirname(__FILE__).'/PropalTest.php';
+require_once dirname(__FILE__).'/CommandeTest.php';
 
+print "Load permissions for admin user with login 'admin'\n";
+$user->fetch('admin');
+$user->getrights();
 
-class MyTestSuite extends PHPUnit_Framework_TestSuite
-{
-	protected $savconf;
-	protected $savuser;
-	protected $savlangs;
-	protected $savdb;
-
-  	protected function setUp()
-    {
-		//$this->sharedFixture
-		global $conf,$user,$langs,$db;
-		print __METHOD__." db->type=".$db->type." user->id=".$user->id;
-		//print " - db ".$db->db;
-		print "\n";
-		$this->savconf=$conf;
-		$this->savuser=$user;
-		$this->savlangs=$langs;
-		$this->savdb=$db;
 
-		$db->begin();
-		//print "TO=".$db->transaction_opened;
-    }
-  	protected function tearDown()
+/**
+ * Class for the All test suite
+ */
+class MyTestSuite
+{
+	public static function suite()
     {
-    	global $conf,$langs,$db,$user;
-		$conf=$this->savconf;
-		$user=$this->savuser;
-		$langs=$this->savlangs;
-		$db=$this->savdb;
-
-		print __METHOD__."\n";
-    	//print $db->getVersion();	// Uncomment this to know if db handler is still working
-		//print "TO=".$db->transaction_opened;
-    	$db->rollback();
-    }
+		$suite = new PHPUnit_Framework_TestSuite('PHPUnit Framework');
 
+        $suite->addTestSuite('FactureTest');
+        $suite->addTestSuite('PropalTest');
+        $suite->addTestSuite('CommandeTest');
 
- 	public static function suite()
-    {
-        return new MyTestSuite('FactureTest');
+        return $suite;
     }
-
 }
+
 ?>
\ No newline at end of file
diff --git a/test/PropalTest.php b/test/PropalTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..1aef2d88bff902150344d7230b6b7ccfefa07d13
--- /dev/null
+++ b/test/PropalTest.php
@@ -0,0 +1,219 @@
+<?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/PropalTest.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/comm/propal/propal.class.php';
+
+print "Load permissions for admin user with login 'admin'\n";
+$user->fetch('admin');
+$user->getrights();
+
+
+/**
+ * @backupGlobals enabled
+ * @backupStaticAttributes enabled
+ */
+class PropalTest extends PHPUnit_Framework_TestCase
+{
+	protected $savconf;
+	protected $savuser;
+	protected $savlangs;
+	protected $savdb;
+
+	/**
+	 * Constructor
+	 * We save global variables into local variables
+	 *
+	 * @return PropalTest
+	 */
+	function PropalTest()
+	{
+		//$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;
+
+    	print __METHOD__."\n";
+		if (! $db->transaction_opened) $db->begin();	// This is to have all actions inside a transaction even if test launched without suite.
+    }
+    public static function tearDownAfterClass()
+    {
+    	global $conf,$user,$langs,$db;
+
+		print __METHOD__."\n";
+    }
+
+	/**
+	 * @backupGlobals enabled
+	 * @backupStaticAttributes enabled
+	 */
+    protected function setUp()
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		print __METHOD__."\n";
+		//print $db->getVersion()."\n";
+    }
+	/**
+	 * @backupGlobals enabled
+	 * @backupStaticAttributes enabled
+	 */
+    protected function tearDown()
+    {
+    	print __METHOD__."\n";
+    }
+
+    /**
+     * @backupGlobals enabled
+ 	 * @backupStaticAttributes enabled
+     * @covers Propal::create
+     */
+    public function testPropalCreate()
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Propal($this->savdb);
+    	$localobject->initAsSpecimen();
+    	$result=$localobject->create($user);
+
+    	$this->assertLessThan($result, 0);
+    	print __METHOD__." result=".$result."\n";
+    	return $result;
+    }
+
+    /**
+     * @backupGlobals enabled
+     * @backupStaticAttributes enabled
+     * @depends	testPropalCreate
+     * @covers Propal::fetch
+     * The depends says test is run only if previous is ok
+     */
+    public function testPropalFetch($id)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Propal($this->savdb);
+    	$result=$localobject->fetch($id);
+    	$this->assertLessThan($result, 0);
+    	print __METHOD__." id=".$id." result=".$result."\n";
+    	return $localobject;
+    }
+
+    /**
+     * @backupGlobals enabled
+     * @backupStaticAttributes enabled
+     * @depends	testPropalFetch
+     * @covers Propal::update
+     * The depends says test is run only if previous is ok
+     */
+/*    public function testPropalUpdate($localobject)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject->note='New note after update';
+    	$result=$localobject->update($user);
+    	print __METHOD__." id=".$localobject->id." result=".$result."\n";
+    	$this->assertLessThan($result, 0);
+    	return $localobject->id;
+    }
+*/
+    /**
+     * @backupGlobals enabled
+     * @backupStaticAttributes enabled
+     * @depends	testPropalFetch
+     * @covers Propal::valid
+     * The depends says test is run only if previous is ok
+     */
+    public function testPropalValid($localobject)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+    	$result=$localobject->valid($user);
+    	print __METHOD__." id=".$localobject->id." result=".$result."\n";
+    	$this->assertLessThan($result, 0);
+    	return $localobject->id;
+    }
+
+    /**
+     * @backupGlobals enabled
+     * @backupStaticAttributes enabled
+     * @depends	testPropalValid
+     * @covers Propal::delete
+     * The depends says test is run only if previous is ok
+     */
+    public function testPropalDelete($id)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Propal($this->savdb);
+    	$result=$localobject->fetch($id);
+		$result=$localobject->delete($user);
+    	print __METHOD__." id=".$id." result=".$result."\n";
+    	$this->assertLessThan($result, 0);
+    	return $result;
+    }
+
+
+}
+?>
\ No newline at end of file
diff --git a/test/README b/test/README
index 90c1efa8187519b3b8511e6b7947080f8fc6e7fe..36d4b8c6d0a71e66c2c4d0f1a4266db699367191 100644
--- a/test/README
+++ b/test/README
@@ -6,14 +6,17 @@ To use them, you must:
 * Install PHPUnit
 If using Eclipse, you must also add an entry as external tool for phpunit programm with:
 -Name:      PHPUnit
--Location:  /usr/bin/php
+-Location:  Linux:   /usr/bin/php
+            Windows: C:\Program Files (x86)\wamp\bin\php\php5.2.8\php.exe
 -Workspace: ${workspace_loc}
--Arguments: /usr/bin/phpunit ${resource_path}
+-Arguments: Linux:   /usr/bin/phpunit ${resource_path}
+            Windows: "C:\Program Files (x86)\PHPUnit-3.4.9\phpunit.php" ${resource_path}
 
-* Run unit tests: 
+* Run Unit tests: 
 Run > phpunit TestFile.php
 If using Eclipse, select the test and click on menu "Run external tools and choose PHPUnit".
 
-* List code coverage by unit tests:
-Run > phpunit --coverage-html ./report TestFile.php
+* Generate a report of Unit tests code coverage:
+Run > phpunit --coverage-html ./report MyTestSuite.php
 Note that xdebug must be installed for this feature to work.
+