function testFetch()
  {
    $entity = new DataSpace();
    $entity->set('_node_id', $id = 10);

    $result = new PagedArrayDataset(array());

    $decorated_dao = new MockSQLBasedDAO($this);
    $decorated_dao->expectOnce('addCriteria');
    $decorated_dao->expectOnce('fetch');

    $data = array(array('whatever1'),
                  array('whatever2'));

    $rs = new PagedArrayDataset($data);
    $decorated_dao->setReturnReference('fetch', $rs);

    $criteria = new MockTreeNodeSiblingsCriteria($this);
    $criteria->expectOnce('setParentNodeId', array($id));

    $node_dao = new MockRequestResolverResultDAO($this);
    $node_dao->expectOnce('fetchRecord');
    $node_dao->setReturnReference('fetchRecord', $entity);

    $dao = new NodeSiblingsDAOTestVersion($this);
    $dao->NodeSiblingsDAO($decorated_dao, $node_dao);
    $dao->setReturnReference('getTreeNodeSiblingsCriteria', $criteria);

    $this->assertNotNull($dao->fetch());

    $decorated_dao->tally();
    $node_dao->tally();

    $criteria->tally();
  }
  function testProcessUseNodeId()
  {
    $record = new DataSpace();
    $record->import(array('_node_id' => $node_id = 100));

    $this->translator->expectOnce('getPathToNode', array($node_id));
    $this->translator->setReturnValue('getPathToNode', $path = '/whatever/');

    $processor = new PathRecordProcessor();
    $processor->process($record);

    $this->assertEqual($record->get('_node_path'), $path);
  }
 function testLoginFailedPasswordNotMatched()
 {
     $users_dao = new MockAbstractUsersDAO($this);
     $this->authenticator->setUsersDAO($users_dao);
     $users_dao->expectOnce('findByLogin', array($login = '******'));
     $user_data = new DataSpace();
     $user_data->import(array('password' => md5('wrong_password')));
     $users_dao->setReturnReference('findByLogin', $user_data);
     $this->authenticator->login($login, $password = '******');
     $toolkit =& Limb::toolkit();
     $user =& $toolkit->getUser();
     $this->assertFalse($user->isLoggedIn());
     $users_dao->tally();
 }
Exemplo n.º 4
0
 /**
  * Gets a property value by navagating a dot separated path
  * that dereferences elements within the dataspace.
  * If an element cannot be dereferenced or is not set, the
  * value NULL is returned.
  * @param string name of property
  * @return mixed value of property or NULL if not found
  * @access public
  */
 function getPath($path)
 {
     if (($pos = strpos($path, '.')) === FALSE) {
         return $this->get($path);
     } else {
         $value = $this->get(substr($path, 0, $pos));
         $dataspace =& DataSpace::makeDataSpace($value);
         if (is_null($dataspace)) {
             return NULL;
         }
         return $dataspace->getPath(substr($path, $pos + 1));
     }
 }
  function testLoad()
  {
    $mapper1 = new MockMapper($this);
    $mapper1->setReturnValue('getIdentityKeyName', 'id');
    $mapper2 = new MockMapper($this);//will be used by default
    $mapper2->setReturnValue('getIdentityKeyName', 'id');

    $mapper = new EntityDataMapper();
    $mapper->registerPartMapper('Part1', $mapper1);

    $part1 = new EntityPartStub1();
    $part1->set('id', 10);
    $part2 = new EntityPartStub2();
    $part2->set('id', 12);

    $entity = new Entity();
    $entity->registerPart('Part1', $part1);
    $entity->registerPart('Part2', $part2);

    $object_mapper = new MockMapper($this);

    $this->toolkit->setReturnReference('createDataMapper', $object_mapper, array('ObjectMapper'));
    $this->toolkit->setReturnReference('createDataMapper', $mapper1, array('EntityPartStub1Mapper'));
    $this->toolkit->setReturnReference('createDataMapper', $mapper2, array('EntityPartStub2Mapper'));

    $record = new DataSpace();
    $record->set('oid', $oid = 1000);

    $object_mapper->expectOnce('load', array($record, $entity));
    $mapper1->expectOnce('load', array($record, $part1));
    $mapper2->expectOnce('load', array($record, $part2));

    $mapper->load($record, $entity);

    $this->assertEqual($part1->get('oid'), $oid);
    $this->assertEqual($part2->get('oid'), $oid);

    $object_mapper->tally();
    $mapper1->tally();
    $mapper2->tally();

    $uow =& $this->toolkit->getUOW();
    $this->assertTrue($uow->isExisting($part1));
    $this->assertTrue($uow->isExisting($part2));
  }
  function testFetchById()
  {
    $id = "10";

    $criteria1 = new MockCriteria($this);
    $criteria2 = new MockCriteria($this);

    $this->dao->addCriteria($criteria1);
    $this->dao->addCriteria($criteria2);

    $criteria1->expectOnce('process', array(new IsAExpectation('MockComplexSelectSQL')));
    $criteria2->expectOnce('process', array(new IsAExpectation('MockComplexSelectSQL')));

    $this->sql->expectOnce('addCondition', array('oid=10'));
    $this->sql->expectOnce('toString');
    $this->sql->setReturnValue('toString', $str = 'SELECT *...');

    $this->conn->expectOnce('newStatement', array($str));
    $this->conn->setReturnReference('newStatement', $this->stmt, array($str));

    $record = new DataSpace();
    $record->import($row = array('whatever'));

    $this->stmt->expectOnce('getRecordSet');
    $this->stmt->setReturnValue('getRecordSet', $rs = new ArrayDataSet(array($row)));

    $this->assertEqual($this->dao->fetchById($id), $record);

    $criteria1->tally();
    $criteria2->tally();
  }
  function testAdd()
  {
    $dao = new MockDAO($this);
    $mapper = new ProxyTestMapper($this);

    $proxy = new ProxyObjectCollection($dao, $mapper, new LimbHandle('Object'));

    $raw_array = array(array('id' => 1));

    $dao->expectOnce('fetch');
    $dao->setReturnValue('fetch', $dataset = new ArrayDataSet($raw_array));

    $ds1 = new DataSpace();
    $ds1->import($raw_array[0]);

    $mapper->expectOnce('load', array($ds1, new Object()));

    $added_object = new Object();
    $added_object->set('id', 2);

    $proxy->add($added_object);

    $proxy->rewind();

    $fetched_object = new Object();
    $fetched_object->set('id', 1);

    $this->assertEqual($proxy->current(), $fetched_object);

    $proxy->next();

    $this->assertEqual($proxy->current(), $added_object);

    $proxy->next();

    $this->assertFalse($proxy->valid());

    $dao->tally();
    $mapper->tally();
  }
  function testLoad()
  {
    $record = new DataSpace();
    $record->import($row = array('whatever'));

    $object = new UOWTestObject();
    $object->set('id', $id = 100);//we do the mapper's job

    $this->toolkit->setReturnReference('createObject', $object, array('UOWTestObject'));

    $this->dao->expectOnce('fetchById', array($id));
    $this->dao->setReturnValue('fetchById', $record, array($id));

    $this->mapper->expectOnce('load', array($record, $object));

    $loaded_object =& $this->uow->load('UOWTestObject', $id);

    $this->assertTrue($this->uow->isExisting($loaded_object));
    $this->assertFalse($this->uow->isNew($loaded_object));

    $this->assertEqual($object, $loaded_object);

    //cache hit test
    $object =& $this->uow->load('UOWTestObject', $id);

    $this->assertEqual($object, $loaded_object);
  }
  function _coachMockUsingArray($array)
  {
    $mock =& new MockPagedArrayDataSet($this);

    $mock->expectCallCount('rewind', 1);
    $mock->expectCallCount('next', sizeof($array));
    $mock->expectCallCount('valid', sizeof($array) + 1);

    for($i=0; $i<sizeof($array); $i++)
    {
      $mock->setReturnValueAt($i, 'valid', true);

      $dataspace = new DataSpace();
      $dataspace->import($array[$i]);
      $mock->setReturnValueAt($i, 'current', $dataspace);
    }

    $mock->setReturnValueAt($i, 'valid', false);
    return $mock;
  }
 function &_createUserDataSpaceFromArray($user_data)
 {
     $result = new DataSpace();
     $result->import(array('login' => $user_data[0], 'password' => $user_data[1], 'name' => $user_data[2], 'email' => $user_data[3], 'groups' => explode(',', $user_data[4])));
     return $result;
 }