diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb index 03c3ee3363d..cd70c6f3962 100644 --- a/app/helpers/events_helper.rb +++ b/app/helpers/events_helper.rb @@ -157,7 +157,7 @@ module EventsHelper project_commit_url(event.project, id: event.commit_to) end - else + elsif event.ref_name project_commits_url(event.project, event.ref_name) end diff --git a/app/views/events/_event.atom.builder b/app/views/events/_event.atom.builder index 17bf43a4590..c429bbbb610 100644 --- a/app/views/events/_event.atom.builder +++ b/app/views/events/_event.atom.builder @@ -3,10 +3,11 @@ return unless event.visible_to_user?(current_user) event = event.present +event_url = event_feed_url(event) xml.entry do xml.id "tag:#{request.host},#{event.created_at.strftime("%Y-%m-%d")}:#{event.id}" - xml.link href: event_feed_url(event) + xml.link href: event_url if event_url xml.title truncate(event_feed_title(event), length: 80) xml.updated event.updated_at.xmlschema diff --git a/app/views/events/_event_push.atom.haml b/app/views/events/_event_push.atom.haml index c5b033b1185..c3786d7c16d 100644 --- a/app/views/events/_event_push.atom.haml +++ b/app/views/events/_event_push.atom.haml @@ -1,7 +1,9 @@ +- event_url = event_feed_url(event) + %div{ xmlns: "http://www.w3.org/1999/xhtml" } %p %strong= event.author_name - = link_to "(#{truncate_sha(event.commit_id)})", event_feed_url(event) + = link_to "(#{truncate_sha(event.commit_id)})", event_url if event_url %i at = event.created_at.to_s(:short) diff --git a/changelogs/unreleased/fix-push-multiple-tags-atom.yml b/changelogs/unreleased/fix-push-multiple-tags-atom.yml new file mode 100644 index 00000000000..bbe9b90ce78 --- /dev/null +++ b/changelogs/unreleased/fix-push-multiple-tags-atom.yml @@ -0,0 +1,5 @@ +--- +title: Fix atom feed with push events for multiple tags +merge_request: 62059 +author: +type: fixed diff --git a/spec/controllers/dashboard/projects_controller_spec.rb b/spec/controllers/dashboard/projects_controller_spec.rb index dcec8012f03..ed8dc1eb7cb 100644 --- a/spec/controllers/dashboard/projects_controller_spec.rb +++ b/spec/controllers/dashboard/projects_controller_spec.rb @@ -156,6 +156,12 @@ RSpec.describe Dashboard::ProjectsController, :aggregate_failures do let!(:design_event) { create(:design_event, project: project) } let!(:wiki_page_event) { create(:wiki_page_event, project: project) } let!(:issue_event) { create(:closed_issue_event, project: project) } + let!(:push_event) do + create(:push_event, project: project).tap do |event| + create(:push_event_payload, event: event, ref_count: 2, ref: nil, ref_type: :tag, commit_count: 0, action: :pushed) + end + end + let(:design) { design_event.design } let(:wiki_page) { wiki_page_event.wiki_page } let(:issue) { issue_event.issue } @@ -168,9 +174,10 @@ RSpec.describe Dashboard::ProjectsController, :aggregate_failures do it 'renders all kinds of event without error' do get :index, format: :atom - expect(assigns(:events)).to include(design_event, wiki_page_event, issue_event) + expect(assigns(:events)).to include(design_event, wiki_page_event, issue_event, push_event) expect(response).to render_template('dashboard/projects/index') expect(response.body).to include( + "pushed to project", "uploaded design #{design.to_reference}", "created wiki page #{wiki_page.title}", "joined project #{project.full_name}", diff --git a/spec/helpers/events_helper_spec.rb b/spec/helpers/events_helper_spec.rb index 264bad92d56..073cebeecd5 100644 --- a/spec/helpers/events_helper_spec.rb +++ b/spec/helpers/events_helper_spec.rb @@ -88,6 +88,13 @@ RSpec.describe EventsHelper do expect(helper.event_feed_url(event)).to eq(push_event_feed_url(event)) end + + it 'returns nil for push event with multiple refs' do + event = create(:push_event) + create(:push_event_payload, event: event, ref_count: 2, ref: nil, ref_type: :tag, commit_count: 0, action: :pushed) + + expect(helper.event_feed_url(event)).to eq(nil) + end end describe '#event_preposition' do