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); }
/** * 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>"; } }