diff --git a/app/views/dashboard/home.atom.builder b/app/views/dashboard/home.atom.builder index 6949c2e0c..3b9c4ce23 100644 --- a/app/views/dashboard/home.atom.builder +++ b/app/views/dashboard/home.atom.builder @@ -7,7 +7,6 @@ atom_feed do |feed| @versions.each do |version| feed.entry(version, url: version_url(version.to_param)) do |entry| entry.title "#{version.project.name} - #{version.number}" - entry.published Time.at(version.published_at).rfc822 entry.content "", type: "html" entry.author do |author| author.name("Libraries.io") diff --git a/app/views/projects/tags.atom.builder b/app/views/projects/tags.atom.builder index 8662042e5..4ff29a120 100644 --- a/app/views/projects/tags.atom.builder +++ b/app/views/projects/tags.atom.builder @@ -7,7 +7,6 @@ atom_feed do |feed| @tags.each do |tag| feed.entry(tag, url: version_url(@project.to_param.merge(number: tag.name))) do |entry| entry.title(tag.number) - entry.published Time.at(tag.published_at).rfc822 entry.content "", type: "html" entry.author do |author| author.name("Libraries.io") diff --git a/app/views/projects/versions.atom.builder b/app/views/projects/versions.atom.builder index c07f17095..4c852d7f2 100644 --- a/app/views/projects/versions.atom.builder +++ b/app/views/projects/versions.atom.builder @@ -7,7 +7,6 @@ atom_feed do |feed| @versions.each do |version| feed.entry(version, url: version_url(version.to_param)) do |entry| entry.title(version.number) - entry.published Time.at(version.published_at).rfc822 entry.content "", type: "html" entry.author do |author| author.name("Libraries.io") diff --git a/spec/requests/projects_versions_atom_spec.rb b/spec/requests/projects_versions_atom_spec.rb new file mode 100644 index 000000000..2b447e31e --- /dev/null +++ b/spec/requests/projects_versions_atom_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require "rails_helper" + +RSpec.describe "Projects versions Atom feed", type: :request do + let!(:project) { create(:project, platform: "NPM", name: "example-package") } + let!(:version1) { create(:version, project: project, number: "1.0.0", published_at: 2.days.ago) } + let!(:version2) { create(:version, project: project, number: "1.1.0", published_at: 1.day.ago) } + + it "renders RFC3339 once per entry" do + visit project_versions_path(project.to_param.merge(format: :atom)) + + # Find all elements + published_nodes = Nokogiri::XML(page.body).xpath("//xmlns:entry/xmlns:published") + expect(published_nodes.length).to eq(2) + + # RFC3339 basic check: YYYY-MM-DDTHH:MM:SSZ + rfc3339_regex = /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z\z/ + published_nodes.each do |node| + expect(node.text).to match(rfc3339_regex) + end + end +end