Skip to content

Commit

Permalink
Make sure there's always a menu item for the current project
Browse files Browse the repository at this point in the history
Avoids a problem where the wrong project can be shown as selected in the
project bar dropdown when the project is not returned in `ProjectsService.list`.
  • Loading branch information
spadgett committed Sep 5, 2017
1 parent a466335 commit 26d175d
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 7 deletions.
19 changes: 17 additions & 2 deletions app/scripts/directives/nav.js
Original file line number Diff line number Diff line change
Expand Up @@ -329,8 +329,23 @@ angular.module('openshiftConsole')
});

updateProjects().then(function() {
$scope.projectName = projectName;
$scope.currentProject = _.get(projects, [ projectName ]);
if (!$scope.projectName || !projects) {
return;
}

if (!projects[$scope.projectName]) {
// Make sure there is an entry for the current project in the
// dropdown. If it doesn't actually exist, the controller for
// the current view is responsible for redirecting to an error
// page.
projects[$scope.projectName] = {
metadata: {
name: $scope.projectName
}
};
}

$scope.currentProject = projects[$scope.projectName];
updateOptions();
});
} else {
Expand Down
2 changes: 1 addition & 1 deletion app/views/directives/header/header.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
<select class="selectpicker form-control" data-selected-text-format="count>3" id="boostrapSelect" title=""></select>
</div>
<!-- create buttons show at mobile -->
<div class="dropdown add-to-project" ng-show="canIAddToProject" uib-dropdown>
<div class="dropdown add-to-project" ng-if="canIAddToProject" uib-dropdown>
<a class="dropdown-toggle" href="" ng-disabled="currentProject.status.phase != 'Active'" title="Add to Project" uib-dropdown-toggle>
<i class="fa fa-plus visible-xs-inline-block" aria-hidden="true" title="Add to Project"></i><span class="hidden-xs">Add to Project</span><span class="hidden-xs caret" aria-hidden="true" title="Add to Project"></span>
</a>
Expand Down
6 changes: 5 additions & 1 deletion dist/scripts/scripts.js
Original file line number Diff line number Diff line change
Expand Up @@ -10137,7 +10137,11 @@ var e = a.project;
r.projectName !== e && (r.projectName = e, r.chromeless = "chromeless" === a.view, e && !r.chromeless ? (_.set(n, "view.hasProject", !0), r.canIAddToProject = !1, o.getProjectRules(e).then(function() {
r.projectName === e && (r.canIAddToProject = o.canIAddToProject(e));
}), C().then(function() {
r.projectName = e, r.currentProject = _.get(l, [ e ]), b();
r.projectName && l && (l[r.projectName] || (l[r.projectName] = {
metadata: {
name: r.projectName
}
}), r.currentProject = l[r.projectName], b());
})) : _.set(n, "view.hasProject", !1));
}), v.selectpicker({
iconBase: "fa",
Expand Down
2 changes: 1 addition & 1 deletion dist/scripts/templates.js
Original file line number Diff line number Diff line change
Expand Up @@ -6852,7 +6852,7 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
"<select class=\"selectpicker form-control\" data-selected-text-format=\"count>3\" id=\"boostrapSelect\" title=\"\"></select>\n" +
"</div>\n" +
"\n" +
"<div class=\"dropdown add-to-project\" ng-show=\"canIAddToProject\" uib-dropdown>\n" +
"<div class=\"dropdown add-to-project\" ng-if=\"canIAddToProject\" uib-dropdown>\n" +
"<a class=\"dropdown-toggle\" href=\"\" ng-disabled=\"currentProject.status.phase != 'Active'\" title=\"Add to Project\" uib-dropdown-toggle>\n" +
"<i class=\"fa fa-plus visible-xs-inline-block\" aria-hidden=\"true\" title=\"Add to Project\"></i><span class=\"hidden-xs\">Add to Project</span><span class=\"hidden-xs caret\" aria-hidden=\"true\" title=\"Add to Project\"></span>\n" +
"</a>\n" +
Expand Down
2 changes: 1 addition & 1 deletion test/integration/features/user_creates_project.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ describe('', () => {
it('should successfully create a new project', () => {
goToCreateProjectPage();
projectHelpers.createProject(project, 'project/' + project['name'] + '/create');
h.waitForPresence('.project-bar option[selected]', project['displayName']);
h.waitForPresence('.project-bar option[selected][value="' + project['name'] + '"]');
checkProjectSettings(project['name'], project['displayName'], project['description']);
});

Expand Down
2 changes: 1 addition & 1 deletion test/integration/page-objects/overview.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class OverviewPage extends Page {
}
clickAddToProject() {
let button = element(by.cssContainingText('.add-to-project .dropdown-toggle', 'Add to Project'));
h.waitForElem(button);
h.waitForElem(button, 10000);
button.click();
let menuItem = element(by.cssContainingText('.dropdown-menu a', 'Browse Catalog'));
h.waitForElem(menuItem);
Expand Down

0 comments on commit 26d175d

Please sign in to comment.