/**
  * Creates and returns a node with the given properties
  *
  * @param array $properties
  *
  * @return Node
  */
 protected function createNode(array $aProperties)
 {
     if ($aProperties['id'] !== 1) {
         $oNode = new AccountNode($aProperties['id'], $aProperties['parent'], $aProperties['account_number'], $aProperties['account_name'], $aProperties['account_name_slug'], $aProperties['hide_ui'], $aProperties['is_debit'], $aProperties['is_credit']);
         if (true === array_key_exists('balance', $aProperties)) {
             $oNode->setBasicBalance($aProperties['balance']);
         }
         return $oNode;
     } else {
         return parent::createNode($aProperties);
     }
 }
 public function testProperties()
 {
     $iAccountId = 2;
     $iParentId = 1;
     $sAccountNumber = '1-00001';
     $sAccountName = 'example account';
     $sAccountNameSlug = 'example_account';
     $bHideUI = false;
     $bIsDebit = true;
     $bIsCredit = false;
     $oANode = new AccountNode($iAccountId, $iParentId, $sAccountNumber, $sAccountName, $sAccountNameSlug, $bHideUI, $bIsDebit, $bIsCredit);
     # test properties
     $this->assertEquals($iAccountId, $oANode->getDatabaseID());
     $this->assertEquals($sAccountNumber, $oANode->getAccountNumber());
     $this->assertEquals($sAccountName, $oANode->getAccountName());
     $this->assertEquals($sAccountNameSlug, $oANode->getAccountNameSlug());
     $this->assertEquals($bIsDebit, $oANode->isDebit());
     $this->assertEquals($bIsCredit, $oANode->isCredit());
 }