diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index a61289e7d09..607e0563e7d 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -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; } /** diff --git a/test/phpunit/UserTest.php b/test/phpunit/UserTest.php index abb7ab80cc5..088115a64ec 100644 --- a/test/phpunit/UserTest.php +++ b/test/phpunit/UserTest.php @@ -176,12 +176,19 @@ class UserTest extends PHPUnit_Framework_TestCase $langs=$this->savlangs; $db=$this->savdb; - $localobject->note='New note after update'; - $result=$localobject->update($user); + $this->changeProperties($localobject); + $result=$localobject->update($user); print __METHOD__." id=".$localobject->id." result=".$result."\n"; $this->assertLessThan($result, 0); - return $localobject; + + // 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