Skip to content
Snippets Groups Projects
Commit df08d838 authored by Laurent Destailleur's avatar Laurent Destailleur
Browse files

More robust phpunit tests

parent e352e4a5
Branches
Tags
No related merge requests found
......@@ -1969,6 +1969,8 @@ class User extends CommonObject
$this->admin=0;
$this->login='dolibspec';
$this->pass='dolibspec';
//$this->pass_indatabase='dolibspec'; Set after a fetch
//$this->pass_indatabase_crypted='e80ca5a88c892b0aaaf7e154853bccab'; Set after a fetch
$this->datec=time();
$this->datem=time();
$this->webcal_login='dolibspec';
......@@ -1977,7 +1979,9 @@ class User extends CommonObject
$this->datepreviouslogin=time();
$this->statut=1;
$this->societe_id = 1;
//$this->societe_id = 1; For external users
//$this->contact_id = 1; For external users
$this->entity = 1;
}
/**
......
......@@ -176,11 +176,18 @@ class UserTest extends PHPUnit_Framework_TestCase
$langs=$this->savlangs;
$db=$this->savdb;
$localobject->note='New note after update';
$this->changeProperties($localobject);
$result=$localobject->update($user);
print __METHOD__." id=".$localobject->id." result=".$result."\n";
$this->assertLessThan($result, 0);
// Test everything are still same than specimen
$newlocalobject=new User($this->savdb);
$newlocalobject->initAsSpecimen();
$this->changeProperties($newlocalobject);
$this->assertEquals($this->objCompare($localobject,$newlocalobject,true,array('id','ref','pass_indatabase','pass_indatabase_crypted','date_creation','datelastlogin','datepreviouslogin')), array()); // Actual, Expected
return $localobject;
}
......@@ -204,6 +211,7 @@ class UserTest extends PHPUnit_Framework_TestCase
print __METHOD__." id=".$localobject->id." result=".$result."\n";
$this->assertLessThan($result, 0);
return $localobject;
}
......@@ -260,5 +268,54 @@ class UserTest extends PHPUnit_Framework_TestCase
return $result;
}
/**
* Edit an object to test updates
*
* @param mixed &$localobject Object Facture
* @return void
*/
public function changeProperties(&$localobject)
{
$localobject->note='New note after update';
}
/**
* Compare all public properties values of 2 objects
*
* @param Object $oA Object operand 1
* @param Object $oB Object operand 2
* @param boolean $ignoretype False will not report diff if type of value differs
* @param array $fieldstoignorearray Array of fields to ignore in diff
* @return array Array with differences
*/
public function objCompare($oA,$oB,$ignoretype=true,$fieldstoignorearray=array('id'))
{
$retAr=array();
if (get_class($oA) !== get_class($oB))
{
$retAr[]="Supplied objects are not of same class.";
}
else
{
$oVarsA=get_object_vars($oA);
$oVarsB=get_object_vars($oB);
$aKeys=array_keys($oVarsA);
foreach($aKeys as $sKey)
{
if (in_array($sKey,$fieldstoignorearray)) continue;
if (! $ignoretype && $oVarsA[$sKey] !== $oVarsB[$sKey])
{
$retAr[]=$sKey.' : '.(is_object($oVarsA[$sKey])?get_class($oVarsA[$sKey]):$oVarsA[$sKey]).' <> '.(is_object($oVarsB[$sKey])?get_class($oVarsB[$sKey]):$oVarsB[$sKey]);
}
if ($ignoretype && $oVarsA[$sKey] != $oVarsB[$sKey])
{
$retAr[]=$sKey.' : '.(is_object($oVarsA[$sKey])?get_class($oVarsA[$sKey]):$oVarsA[$sKey]).' <> '.(is_object($oVarsB[$sKey])?get_class($oVarsB[$sKey]):$oVarsB[$sKey]);
}
}
}
return $retAr;
}
}
?>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment