Commit 22d14c36 authored by Stan Hu's avatar Stan Hu

Fix 404 errors when "No epic" selected

If a user clicked on "No epic" in creating an issuable, a 404 would
return, and the user would lose all the information entered.  This
happened because when the button were selected, the frontend would make
the hidden element active and send the backend a "0" value. To avoid
this, we now ignore zero values.

Closes https://gitlab.com/gitlab-org/gitlab/-/issues/226999
parent f7881d39
......@@ -26,7 +26,7 @@ module EE
def find_epic(issue)
id = params.delete(:epic_id)
return unless id.present?
return if id.to_i.zero?
group = issue.project.group
return unless group.present?
......
---
title: Fix 404 errors when "No epic" selected
merge_request: 36137
author:
type: fixed
......@@ -3,16 +3,20 @@
require "spec_helper"
RSpec.describe "User creates issue", :js do
let(:user) { create(:user) }
let(:group) { create(:group, :public) }
let(:project) { create(:project_empty_repo, :public, namespace: group) }
let!(:epic) { create(:epic, group: group, title: 'Sample epic', author: user) }
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group, :public) }
let_it_be(:project) { create(:project_empty_repo, :public, namespace: group) }
let_it_be(:epic) { create(:epic, group: group, title: 'Sample epic', author: user) }
let(:issue_title) { '500 error on profile' }
before_all do
group.add_developer(user)
end
before do
stub_licensed_features(issue_weights: true)
stub_licensed_features(epics: true)
group.add_developer(user)
sign_in(user)
visit(new_project_issue_path(project))
......@@ -20,7 +24,6 @@ RSpec.describe "User creates issue", :js do
context "with weight set" do
it "creates issue" do
issue_title = "500 error on profile"
weight = "7"
fill_in("Title", with: issue_title)
......@@ -36,19 +39,30 @@ RSpec.describe "User creates issue", :js do
end
end
context "with epic set" do
it "creates issue" do
issue_title = "500 error on profile"
context 'with epics' do
before do
fill_in("Title", with: issue_title)
page.within('.issue-epic .js-epic-block') do
page.find('.js-epic-select').click
wait_for_requests
scroll_to(page.find('.epic-dropdown-container', visible: false))
end
it 'creates an issue with no epic' do
click_button 'Select epic'
click_link('No Epic')
click_button('Submit issue')
page.find('.dropdown-content .gl-link', text: epic.title).click
wait_for_all_requests
page.within(".js-epic-block .js-epic-label") do
expect(page).to have_content('None')
end
click_button("Submit issue")
expect(page).to have_content(issue_title)
end
it 'credates an issue with an epic' do
click_button 'Select epic'
click_link(epic.title)
click_button('Submit issue')
wait_for_all_requests
......
......@@ -13,6 +13,17 @@ RSpec.shared_examples 'issue with epic_id parameter' do
end
end
context 'when epic_id is 0' do
let(:params) { { title: 'issue1', epic_id: 0 } }
it 'ignores epic_id' do
issue = execute
expect(issue).to be_persisted
expect(issue.epic).to be_nil
end
end
context 'when user can not add issues to the epic' do
before do
project.add_maintainer(user)
......
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