render a sitemap page created by a developer of a Wagon site and skip the default sitemap

did committed Oct 14, 2015
commit cf34a22837c7c88a01dd43817b2405a000fb403e
Showing 4 changed files with 21 additions and 3 deletions
locomotive/steam/middlewares/page.rb b/lib/locomotive/steam/middlewares/page.rb +2 -0
@@ @@ -9,6 +9,8 @@ module Locomotive::Steam
include Helpers
def _call
+ return env['steam.page'] if env['steam.page']
+
if page = fetch_page
if !page.not_found?
log "Found page \"#{page.title}\" [#{page.fullpath}]"
locomotive/steam/middlewares/sitemap.rb b/lib/locomotive/steam/middlewares/sitemap.rb +1 -1
@@ @@ -6,7 +6,7 @@ module Locomotive::Steam
include Helpers
def _call
- if env['PATH_INFO'] == '/sitemap.xml'
+ if env['PATH_INFO'] == '/sitemap.xml' && (page.nil? || page.not_found?)
render_response(build_xml, 200, 'text/plain')
end
end
locomotive/steam/server.rb b/lib/locomotive/steam/server.rb +1 -1
@@ @@ -56,12 +56,12 @@ module Locomotive::Steam
Middlewares::Logging,
Middlewares::Robots,
Middlewares::Timezone,
- Middlewares::Sitemap,
Middlewares::EntrySubmission,
Middlewares::Locale,
Middlewares::LocaleRedirection,
Middlewares::Path,
Middlewares::Page,
+ Middlewares::Sitemap,
Middlewares::TemplatizedPage
]
end
spec/integration/server/sitemap_spec.rb +17 -1
@@ @@ -1,5 +1,7 @@
require File.dirname(__FILE__) + '/../integration_helper'
+ require 'locomotive/steam/adapters/filesystem.rb'
+
describe Locomotive::Steam::Server do
include Rack::Test::Methods
@@ @@ -11,8 +13,9 @@ describe Locomotive::Steam::Server do
describe 'sitemap.xml' do
let(:now) { Time.use_zone('America/Chicago') { Time.zone.local(2015, 'mar', 25, 10, 0) } }
+ let(:env) { {} }
- subject { Timecop.freeze(now) { get '/sitemap.xml' }; last_response.body }
+ subject { Timecop.freeze(now) { get('/sitemap.xml', {}, env) }; last_response.body }
before { Locomotive::Steam::Adapters::Filesystem::SimpleCacheStore.new.clear }
@@ @@ -29,6 +32,19 @@ describe Locomotive::Steam::Server do
EOF
).strip)
end
+
+ context 'existing sitemap page' do
+
+ let(:template) { %{<?xml version="1.0" encoding="utf-8"?>OK</xml>} }
+ let(:page) { instance_double('Page', liquid_source: template, templatized?: false, redirect_url: false, to_liquid: template, not_found?: false, response_type: 'application/xml') }
+ let(:env) { { 'steam.page' => page } }
+
+ it 'renders the existing sitemap page' do
+ expect(subject).to eq %{<?xml version="1.0" encoding="utf-8"?>OK</xml>}
+ end
+
+ end
+
end
end