Files
grecia/spec/lib/tasks/sitemap_spec.rb
Javi Martín 9427f01442 Use system specs instead of feature specs
We get rid of database cleaner, and JavaScript tests are faster because
between tests we now rollback transactions instead of truncating the
database.
2020-04-24 15:43:54 +02:00

83 lines
2.3 KiB
Ruby

require "rails_helper"
describe "rake sitemap:create", type: :system do
let(:file) { Rails.root.join("public", "sitemap.xml") }
before do
File.delete(file) if File.exist?(file)
Rake::Task["sitemap:create"].reenable
end
describe "when processes are enabled" do
before { Rake.application.invoke_task("sitemap:create") }
it "generates a sitemap" do
expect(file).to exist
end
it "generates a valid sitemap" do
sitemap = Nokogiri::XML(File.open(file))
expect(sitemap.errors).to be_empty
end
it "generates a sitemap with expected and valid URLs" do
sitemap = File.read(file)
# Static pages
expect(sitemap).to include(faq_path)
expect(sitemap).to include(help_path)
expect(sitemap).to include(how_to_use_path)
# Dynamic URLs
expect(sitemap).to include(polls_path)
expect(sitemap).to include(budgets_path)
expect(sitemap).to include(debates_path)
expect(sitemap).to include(proposals_path)
expect(sitemap).to include(legislation_processes_path)
expect(sitemap).to have_content("0.7", count: 5)
expect(sitemap).to have_content("daily", count: 5)
end
end
describe "when processes are not enabled" do
before do
Setting["process.debates"] = nil
Setting["process.proposals"] = nil
Setting["process.budgets"] = nil
Setting["process.polls"] = nil
Setting["process.legislation"] = nil
Rake.application.invoke_task("sitemap:create")
end
it "generates a sitemap" do
expect(file).to exist
end
it "generates a valid sitemap" do
sitemap = Nokogiri::XML(File.open(file))
expect(sitemap.errors).to be_empty
end
it "generates a sitemap with expected and valid URLs" do
sitemap = File.read(file)
# Static pages
expect(sitemap).to include(faq_path)
expect(sitemap).to include(help_path)
expect(sitemap).to include(how_to_use_path)
# Dynamic URLs
expect(sitemap).not_to include(polls_path)
expect(sitemap).not_to include(budgets_path)
expect(sitemap).not_to include(debates_path)
expect(sitemap).not_to include(proposals_path)
expect(sitemap).not_to include(legislation_processes_path)
expect(sitemap).not_to have_content("0.7")
expect(sitemap).not_to have_content("daily")
end
end
end