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 | |