Commit d4a9aedf authored by Jacopo's avatar Jacopo

Fixes 404 error to `Issues assigned to me` and `Issues I've created` when issues are disabled

The dropdown options `Issues assigned to me` and `Issues I've created` in project search are now
hidden when issues are disabled on the project.
parent 15e3d337
...@@ -162,13 +162,19 @@ import { isInGroupsPage, isInProjectPage, getGroupSlug, getProjectSlug } from '. ...@@ -162,13 +162,19 @@ import { isInGroupsPage, isInProjectPage, getGroupSlug, getProjectSlug } from '.
items = [ items = [
{ {
header: "" + name header: "" + name
}, { }
];
const issueItems = [
{
text: 'Issues assigned to me', text: 'Issues assigned to me',
url: issuesPath + "/?assignee_username=" + userName url: issuesPath + "/?assignee_username=" + userName
}, { }, {
text: "Issues I've created", text: "Issues I've created",
url: issuesPath + "/?author_username=" + userName url: issuesPath + "/?author_username=" + userName
}, 'separator', { }
];
const mergeRequestItems = [
{
text: 'Merge requests assigned to me', text: 'Merge requests assigned to me',
url: mrPath + "/?assignee_username=" + userName url: mrPath + "/?assignee_username=" + userName
}, { }, {
...@@ -176,6 +182,11 @@ import { isInGroupsPage, isInProjectPage, getGroupSlug, getProjectSlug } from '. ...@@ -176,6 +182,11 @@ import { isInGroupsPage, isInProjectPage, getGroupSlug, getProjectSlug } from '.
url: mrPath + "/?author_username=" + userName url: mrPath + "/?author_username=" + userName
} }
]; ];
if (options.issuesDisabled) {
items = items.concat(mergeRequestItems);
} else {
items = items.concat(...issueItems, 'separator', ...mergeRequestItems);
}
if (!name) { if (!name) {
items.splice(0, 1); items.splice(0, 1);
} }
...@@ -408,6 +419,7 @@ import { isInGroupsPage, isInProjectPage, getGroupSlug, getProjectSlug } from '. ...@@ -408,6 +419,7 @@ import { isInGroupsPage, isInProjectPage, getGroupSlug, getProjectSlug } from '.
gl.projectOptions[projectPath] = { gl.projectOptions[projectPath] = {
name: $projectOptionsDataEl.data('name'), name: $projectOptionsDataEl.data('name'),
issuesPath: $projectOptionsDataEl.data('issues-path'), issuesPath: $projectOptionsDataEl.data('issues-path'),
issuesDisabled: $projectOptionsDataEl.data('issues-disabled'),
mrPath: $projectOptionsDataEl.data('mr-path') mrPath: $projectOptionsDataEl.data('mr-path')
}; };
} }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
- if @group && @group.persisted? && @group.path - if @group && @group.persisted? && @group.path
- group_data_attrs = { group_path: j(@group.path), name: @group.name, issues_path: issues_group_path(j(@group.path)), mr_path: merge_requests_group_path(j(@group.path)) } - group_data_attrs = { group_path: j(@group.path), name: @group.name, issues_path: issues_group_path(j(@group.path)), mr_path: merge_requests_group_path(j(@group.path)) }
- if @project && @project.persisted? - if @project && @project.persisted?
- project_data_attrs = { project_path: j(@project.path), name: j(@project.name), issues_path: project_issues_path(@project), mr_path: project_merge_requests_path(@project) } - project_data_attrs = { project_path: j(@project.path), name: j(@project.name), issues_path: project_issues_path(@project), mr_path: project_merge_requests_path(@project), issues_disabled: !@project.issues_enabled? }
.search.search-form{ class: "#{'has-location-badge' if label.present?}" } .search.search-form{ class: "#{'has-location-badge' if label.present?}" }
= form_tag search_path, method: :get, class: 'navbar-form' do |f| = form_tag search_path, method: :get, class: 'navbar-form' do |f|
.search-input-container .search-input-container
......
---
title: Fixes 404 error to 'Issues assigned to me' and 'Issues I've created' when issues
are disabled
merge_request: 15021
author: Jacopo Beschi @jacopo-beschi
type: fixed
...@@ -8,3 +8,4 @@ ...@@ -8,3 +8,4 @@
%input#search.search-input.dropdown-menu-toggle %input#search.search-input.dropdown-menu-toggle
.dropdown-menu.dropdown-select .dropdown-menu.dropdown-select
.dropdown-content .dropdown-content
%input{ type: "hidden", class: "js-search-project-options" }
...@@ -58,6 +58,10 @@ import 'vendor/fuzzaldrin-plus'; ...@@ -58,6 +58,10 @@ import 'vendor/fuzzaldrin-plus';
} }
}; };
const disableProjectIssues = function() {
document.querySelector('.js-search-project-options').setAttribute('data-issues-disabled', true);
};
// Mock `gl` object in window for dashboard specific page. App code will need it. // Mock `gl` object in window for dashboard specific page. App code will need it.
mockDashboardOptions = function() { mockDashboardOptions = function() {
window.gl || (window.gl = {}); window.gl || (window.gl = {});
...@@ -92,18 +96,20 @@ import 'vendor/fuzzaldrin-plus'; ...@@ -92,18 +96,20 @@ import 'vendor/fuzzaldrin-plus';
assertLinks = function(list, issuesPath, mrsPath) { assertLinks = function(list, issuesPath, mrsPath) {
var a1, a2, a3, a4, issuesAssignedToMeLink, issuesIHaveCreatedLink, mrsAssignedToMeLink, mrsIHaveCreatedLink; var a1, a2, a3, a4, issuesAssignedToMeLink, issuesIHaveCreatedLink, mrsAssignedToMeLink, mrsIHaveCreatedLink;
issuesAssignedToMeLink = issuesPath + "/?assignee_username=" + userName; if (issuesPath) {
issuesIHaveCreatedLink = issuesPath + "/?author_username=" + userName; issuesAssignedToMeLink = issuesPath + "/?assignee_username=" + userName;
issuesIHaveCreatedLink = issuesPath + "/?author_username=" + userName;
a1 = "a[href='" + issuesAssignedToMeLink + "']";
a2 = "a[href='" + issuesIHaveCreatedLink + "']";
expect(list.find(a1).length).toBe(1);
expect(list.find(a1).text()).toBe('Issues assigned to me');
expect(list.find(a2).length).toBe(1);
expect(list.find(a2).text()).toBe("Issues I've created");
}
mrsAssignedToMeLink = mrsPath + "/?assignee_username=" + userName; mrsAssignedToMeLink = mrsPath + "/?assignee_username=" + userName;
mrsIHaveCreatedLink = mrsPath + "/?author_username=" + userName; mrsIHaveCreatedLink = mrsPath + "/?author_username=" + userName;
a1 = "a[href='" + issuesAssignedToMeLink + "']";
a2 = "a[href='" + issuesIHaveCreatedLink + "']";
a3 = "a[href='" + mrsAssignedToMeLink + "']"; a3 = "a[href='" + mrsAssignedToMeLink + "']";
a4 = "a[href='" + mrsIHaveCreatedLink + "']"; a4 = "a[href='" + mrsIHaveCreatedLink + "']";
expect(list.find(a1).length).toBe(1);
expect(list.find(a1).text()).toBe('Issues assigned to me');
expect(list.find(a2).length).toBe(1);
expect(list.find(a2).text()).toBe("Issues I've created");
expect(list.find(a3).length).toBe(1); expect(list.find(a3).length).toBe(1);
expect(list.find(a3).text()).toBe('Merge requests assigned to me'); expect(list.find(a3).text()).toBe('Merge requests assigned to me');
expect(list.find(a4).length).toBe(1); expect(list.find(a4).length).toBe(1);
...@@ -154,6 +160,14 @@ import 'vendor/fuzzaldrin-plus'; ...@@ -154,6 +160,14 @@ import 'vendor/fuzzaldrin-plus';
list = widget.wrap.find('.dropdown-menu').find('ul'); list = widget.wrap.find('.dropdown-menu').find('ul');
return assertLinks(list, projectIssuesPath, projectMRsPath); return assertLinks(list, projectIssuesPath, projectMRsPath);
}); });
it('should show only Project mergeRequest dropdown menu items when project issues are disabled', function() {
addBodyAttributes('project');
disableProjectIssues();
mockProjectOptions();
widget.searchInput.triggerHandler('focus');
const list = widget.wrap.find('.dropdown-menu').find('ul');
assertLinks(list, null, projectMRsPath);
});
it('should not show category related menu if there is text in the input', function() { it('should not show category related menu if there is text in the input', function() {
var link, list; var link, list;
addBodyAttributes('project'); addBodyAttributes('project');
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment