From 74dfcab6a9119385a0104e706c2afbffc1c6d388 Mon Sep 17 00:00:00 2001 From: Martin Meyerhoff Date: Tue, 14 May 2024 13:48:42 +0200 Subject: [PATCH] Do not have a cache version if there's no version present We should not cache empty responses. --- app/models/alchemy/page/page_natures.rb | 4 ++-- spec/models/alchemy/page_spec.rb | 32 +++++++++++++++++-------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/app/models/alchemy/page/page_natures.rb b/app/models/alchemy/page/page_natures.rb index e04d53b0cd..44c577d2c0 100644 --- a/app/models/alchemy/page/page_natures.rb +++ b/app/models/alchemy/page/page_natures.rb @@ -104,7 +104,7 @@ def layout_partial_name # Returns the string version of the +last_modified_at+ timestamp. # def cache_version - last_modified_at.to_s + last_modified_at&.to_s end # Returns the timestamp that the page was last modified at, regardless of through. @@ -117,7 +117,7 @@ def cache_version # def last_modified_at relevant_page_version = (Current.preview_page == self) ? draft_version : public_version - relevant_page_version&.updated_at || updated_at + relevant_page_version&.updated_at end # Returns true if the page cache control headers should be set. diff --git a/spec/models/alchemy/page_spec.rb b/spec/models/alchemy/page_spec.rb index 4f6c00433b..fd7c4fc617 100644 --- a/spec/models/alchemy/page_spec.rb +++ b/spec/models/alchemy/page_spec.rb @@ -706,18 +706,30 @@ module Alchemy describe "#cache_version" do let(:page) { build(:alchemy_page) } - before do - allow(page).to receive(:last_modified_at).and_return(1.day.ago) - end - around do |example| travel_to(Time.parse("2019-01-01 12:00:00 UTC")) do example.run end end - it "returns a cache version string" do - expect(page.cache_version).to eq("2018-12-31 12:00:00 UTC") + context "last modified is a time object" do + before do + allow(page).to receive(:last_modified_at).and_return(1.day.ago) + end + + it "returns a cache version string" do + expect(page.cache_version).to eq("2018-12-31 12:00:00 UTC") + end + end + + context "last modified at is nil" do + before do + allow(page).to receive(:last_modified_at).and_return(nil) + end + + it "returns a cache version string" do + expect(page.cache_version).to be(nil) + end end end @@ -768,8 +780,8 @@ module Alchemy context "if page has no draft version" do let(:draft_version) { nil } - it "uses page's updated_at" do - is_expected.to be_within(1.second).of(yesterday) + it "is nil" do + is_expected.to be(nil) end end end @@ -777,8 +789,8 @@ module Alchemy context "not in preview mode" do let(:preview) { nil } - it "uses page's updated_at" do - is_expected.to be_within(1.second).of(yesterday) + it "is nil" do + is_expected.to be(nil) end end end