public function testInsertInTreeShouldInsertInSeveralBranches()
 {
     $lastPushes = array();
     $traversal = new GitViewsRepositoriesTraversalStrategy_Tree($lastPushes, $this->url_manager);
     $tree = array();
     $path = array('a', 'b', 'c');
     $repo1 = new MockGitRepository();
     $traversal->insertInTree($tree, $repo1, $path);
     $path = array('a', 'd');
     $repo2 = new MockGitRepository();
     $traversal->insertInTree($tree, $repo2, $path);
     $path = array('b', 'z');
     $repo3 = new MockGitRepository();
     $traversal->insertInTree($tree, $repo3, $path);
     $this->assertEqual($tree['a']['b']['c'], $repo1);
     $this->assertEqual($tree['a']['d'], $repo2);
     $this->assertEqual($tree['b']['z'], $repo3);
 }
Пример #2
0
 /**
  * TREE SUBVIEW
  */
 protected function _tree($params = array())
 {
     if (empty($params)) {
         $params = $this->getData();
     }
     if (!empty($params['repository_list'])) {
         //echo '<h3>'.$this->getText('tree_title_available_repo').' <a href="#" onclick="$(\'help_tree\').toggle();"> [?]</a></h3>';
         if (!empty($params['repositories_owners'])) {
             $current_id = null;
             if (!empty($params['user'])) {
                 $current_id = (int) $params['user'];
             }
             $select = '<select name="user" onchange="this.form.submit()">';
             $uh = UserHelper::instance();
             $selected = 'selected="selected"';
             $select .= '<option value="" ' . ($current_id ? '' : $selected) . '>' . $this->getText('tree_title_available_repo') . '</option>';
             foreach ($params['repositories_owners'] as $owner) {
                 $select .= '<option value="' . (int) $owner['repository_creation_user_id'] . '" ' . ($owner['repository_creation_user_id'] == $current_id ? $selected : '') . '>' . $uh->getDisplayName($owner['user_name'], $owner['realname']) . '</option>';
             }
             $select .= '</select>';
             echo '<form action="" method="GET">';
             echo '<p>';
             echo '<input type="hidden" name="action" value="index" />';
             echo '<input type="hidden" name="group_id" value="' . (int) $this->groupId . '" />';
             echo $select;
             echo '<noscript><input type="submit" value="' . $GLOBALS['Language']->getText('global', 'btn_submit') . '" /></noscript>';
             echo '</p>';
             echo '</form>';
         }
         $this->help('tree', array('display' => 'none'));
         $lastPushes = array();
         $dao = new Git_LogDao();
         foreach ($params['repository_list'] as $repository) {
             $id = $repository['repository_id'];
             $dar = $dao->searchLastPushForRepository($id);
             if ($dar && !$dar->isError() && $dar->rowCount() == 1) {
                 $lastPushes[$id] = $dar->getRow();
             }
         }
         $strategy = new GitViewsRepositoriesTraversalStrategy_Tree($this, $lastPushes);
         echo $strategy->fetch($params['repository_list'], $this->user);
     } else {
         echo "<h3>" . $this->getText('tree_msg_no_available_repo') . "</h3>";
     }
 }