فهرست منبع

New: Add phpunit tests

Laurent Destailleur 15 سال پیش
والد
کامیت
fd8c193259
8فایلهای تغییر یافته به همراه448 افزوده شده و 7 حذف شده
  1. 215 0
      test/AdherentTest.php
  2. 1 0
      test/CommandeTest.php
  3. 217 0
      test/ContratTest.php
  4. 1 2
      test/FactureTest.php
  5. 8 4
      test/MyTestSuite.php
  6. 1 0
      test/PropalTest.php
  7. 1 1
      test/README
  8. 4 0
      test/phpunittest.xml

+ 215 - 0
test/AdherentTest.php

@@ -0,0 +1,215 @@
+<?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/AdherentTest.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/adherents/class/adherent.class.php';
+
+if (empty($user->id))
+{
+	print "Load permissions for admin user with login 'admin'\n";
+	$user->fetch('admin');
+	$user->getrights();
+}
+
+
+/**
+ * @backupGlobals disabled
+ * @backupStaticAttributes enabled
+ * @covers DoliDb
+ * @covers Translate
+ * @covers Conf
+ * @covers Interfaces
+ * @covers CommonObject
+ * @covers Adherent
+ * @remarks	backupGlobals must be disabled to have db,conf,user and lang not erased.
+ */
+class AdherentTest extends PHPUnit_Framework_TestCase
+{
+	protected $savconf;
+	protected $savuser;
+	protected $savlangs;
+	protected $savdb;
+
+	/**
+	 * Constructor
+	 * We save global variables into local variables
+	 *
+	 * @return AdherentTest
+	 */
+	function AdherentTest()
+	{
+		//$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 testAdherentCreate()
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Adherent($this->savdb);
+    	$localobject->initAsSpecimen();
+    	$result=$localobject->create($user);
+
+    	$this->assertLessThan($result, 0);
+    	print __METHOD__." result=".$result."\n";
+    	return $result;
+    }
+
+    /**
+     * @depends	testAdherentCreate
+     * The depends says test is run only if previous is ok
+     */
+    public function testAdherentFetch($id)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Adherent($this->savdb);
+    	$result=$localobject->fetch($id);
+
+    	$this->assertLessThan($result, 0);
+    	print __METHOD__." id=".$id." result=".$result."\n";
+    	return $localobject;
+    }
+
+    /**
+     * @depends	testAdherentFetch
+     * The depends says test is run only if previous is ok
+     */
+    public function testAdherentUpdate($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;
+    }
+
+    /**
+     * @depends	testAdherentUpdate
+     * The depends says test is run only if previous is ok
+     */
+    public function testAdherentValid($localobject)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+    	$result=$localobject->validate($user);
+    	print __METHOD__." id=".$localobject->id." result=".$result."\n";
+
+    	$this->assertLessThan($result, 0);
+    	return $localobject->id;
+    }
+
+	/**
+     * @depends	testAdherentValid
+     * The depends says test is run only if previous is ok
+     */
+    public function testAdherentDelete($id)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Adherent($this->savdb);
+    	$result=$localobject->fetch($id);
+		$result=$localobject->delete($id);
+
+		print __METHOD__." id=".$id." result=".$result."\n";
+    	$this->assertLessThan($result, 0);
+    	return $result;
+    }
+
+
+}
+?>

+ 1 - 0
test/CommandeTest.php

@@ -42,6 +42,7 @@ if (empty($user->id))
  * @backupGlobals disabled
  * @backupStaticAttributes enabled
  * @covers Commande
+ * @covers OrderLine
  * @remarks	backupGlobals must be disabled to have db,conf,user and lang not erased.
  */
 class CommandeTest extends PHPUnit_Framework_TestCase

+ 217 - 0
test/ContratTest.php

@@ -0,0 +1,217 @@
+<?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/ContratTest.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/contrat/contrat.class.php';
+
+if (empty($user->id))
+{
+	print "Load permissions for admin user with login 'admin'\n";
+	$user->fetch('admin');
+	$user->getrights();
+}
+
+
+/**
+ * @backupGlobals disabled
+ * @backupStaticAttributes enabled
+ * @covers DoliDb
+ * @covers Translate
+ * @covers Conf
+ * @covers Interfaces
+ * @covers CommonObject
+ * @covers Contrat
+ * @covers ContratLigne
+ * @remarks	backupGlobals must be disabled to have db,conf,user and lang not erased.
+ */
+class ContratTest extends PHPUnit_Framework_TestCase
+{
+	protected $savconf;
+	protected $savuser;
+	protected $savlangs;
+	protected $savdb;
+
+	/**
+	 * Constructor
+	 * We save global variables into local variables
+	 *
+	 * @return ContratTest
+	 */
+	function ContratTest()
+	{
+		//$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 testContratCreate()
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Contrat($this->savdb);
+    	$localobject->initAsSpecimen();
+    	$result=$localobject->create($user,$langs,$conf);
+
+    	$this->assertLessThan($result, 0);
+    	print __METHOD__." result=".$result."\n";
+    	return $result;
+    }
+
+    /**
+     * @depends	testContratCreate
+     * The depends says test is run only if previous is ok
+     */
+    public function testContratFetch($id)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Contrat($this->savdb);
+    	$result=$localobject->fetch($id);
+
+    	$this->assertLessThan($result, 0);
+    	print __METHOD__." id=".$id." result=".$result."\n";
+    	return $localobject;
+    }
+
+    /**
+     * @depends	testContratFetch
+     * The depends says test is run only if previous is ok
+     */
+/*    public function testContratUpdate($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;
+    }
+*/
+
+    /**
+     * @depends	testContratFetch
+     * The depends says test is run only if previous is ok
+     */
+    public function testContratValid($localobject)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+    	$result=$localobject->update_statut($user);
+    	print __METHOD__." id=".$localobject->id." result=".$result."\n";
+
+    	$this->assertLessThan($result, 0);
+    	return $localobject->id;
+    }
+
+	/**
+     * @depends	testContratValid
+     * The depends says test is run only if previous is ok
+     */
+    public function testContratDelete($id)
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$localobject=new Contrat($this->savdb);
+    	$result=$localobject->fetch($id);
+		$result=$localobject->delete($id);
+
+		print __METHOD__." id=".$id." result=".$result."\n";
+    	$this->assertLessThan($result, 0);
+    	return $result;
+    }
+
+
+}
+?>

+ 1 - 2
test/FactureTest.php

@@ -47,9 +47,8 @@ if (empty($user->id))
  * @covers Conf
  * @covers Interfaces
  * @covers CommonObject
- * @covers Societe
- * @covers Contact
  * @covers Facture
+ * @covers FactureLigne
  * @remarks	backupGlobals must be disabled to have db,conf,user and lang not erased.
  */
 class FactureTest extends PHPUnit_Framework_TestCase

+ 8 - 4
test/MyTestSuite.php

@@ -30,9 +30,6 @@ 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__).'/FactureTest.php';
-require_once dirname(__FILE__).'/PropalTest.php';
-require_once dirname(__FILE__).'/CommandeTest.php';
 
 if (empty($user->id))
 {
@@ -51,9 +48,16 @@ class MyTestSuite
     {
 		$suite = new PHPUnit_Framework_TestSuite('PHPUnit Framework');
 
+		require_once dirname(__FILE__).'/AdherentTest.php';
+        $suite->addTestSuite('AdherentTest');
+		require_once dirname(__FILE__).'/CommandeTest.php';
+        $suite->addTestSuite('CommandeTest');
+		require_once dirname(__FILE__).'/ContratTest.php';
+        $suite->addTestSuite('ContratTest');
+        require_once dirname(__FILE__).'/FactureTest.php';
         $suite->addTestSuite('FactureTest');
+		require_once dirname(__FILE__).'/PropalTest.php';
         $suite->addTestSuite('PropalTest');
-        $suite->addTestSuite('CommandeTest');
 
         return $suite;
     }

+ 1 - 0
test/PropalTest.php

@@ -42,6 +42,7 @@ if (empty($user->id))
  * @backupGlobals disabled
  * @backupStaticAttributes enabled
  * @covers Propal
+ * @covers PropaleLigne
  * @remarks	backupGlobals must be disabled to have db,conf,user and lang not erased.
  */
 class PropalTest extends PHPUnit_Framework_TestCase

+ 1 - 1
test/README

@@ -21,6 +21,6 @@ Run > phpunit --coverage-html ./report MyTestSuite.php
 Note that xdebug must be installed for this feature to work.
 
 * Generate a report of Unit tests code coverage among all Dolibarr classes:
-Increase your PHP memory (memory_limit in php.ini) to 1Gb.
+Increase your PHP memory (memory_limit in php.ini) to 528MB.
 Run > phpunit --configuration ./phpunittest.xml --coverage-html ./report MyTestSuite.php
 

+ 4 - 0
test/phpunittest.xml

@@ -5,9 +5,13 @@
     <directory suffix=".php">../htdocs/includes/adodbtime/</directory>
     <directory suffix=".php">../htdocs/includes/artichow/</directory>
     <directory suffix=".php">../htdocs/includes/fpdf/</directory>
+    <file>../htdocs/lib/databases/mssql.lib.php</file>
+    <file>../htdocs/lib/databases/pgsql.lib.php</file>
+    <file>../htdocs/lib/databases/mysql.lib.php</file>
   </blacklist>
   <whitelist>
     <directory suffix=".class.php">../htdocs/</directory>
+    <directory suffix=".lib.php">../htdocs/</directory>
   </whitelist>
 </filter>
 </phpunit>