discourse/spec/models/stylesheet_cache_spec.rb
Sam 419b14e58b FIX: correctly keep stylesheet cache entries
The intent from day one was to keep MAX_TO_KEEP stylesheets per target
however the DELETE statement did not perform target filtering

This meant we often deleted the wrong stylesheets from the cache
2018-09-14 12:54:11 +10:00

41 lines
1.4 KiB
Ruby

require 'rails_helper'
describe StylesheetCache do
describe "add" do
it "correctly cycles once MAX_TO_KEEP is hit" do
StylesheetCache.destroy_all
(StylesheetCache::MAX_TO_KEEP + 1).times do |i|
StylesheetCache.add("a", "d" + i.to_s, "c" + i.to_s, "map")
end
expect(StylesheetCache.count).to eq StylesheetCache::MAX_TO_KEEP
expect(StylesheetCache.order(:id).first.content).to eq "c1"
end
it "does nothing if digest is set and already exists" do
StylesheetCache.delete_all
expect(StylesheetCache.add("a", "b", "c", "map")).to be_present
expect(StylesheetCache.add("a", "b", "cc", "map")).to eq(false)
expect(StylesheetCache.count).to eq 1
expect(StylesheetCache.first.content).to eq "c"
end
it "it retains stylesheets for competing targets" do
StylesheetCache.destroy_all
StylesheetCache.add("desktop", SecureRandom.hex, "body { }", "map", max_to_keep: 2)
StylesheetCache.add("desktop", SecureRandom.hex, "body { }", "map", max_to_keep: 2)
StylesheetCache.add("mobile", SecureRandom.hex, "body { }", "map", max_to_keep: 2)
StylesheetCache.add("mobile", SecureRandom.hex, "body { }", "map", max_to_keep: 2)
StylesheetCache.add("mobile", SecureRandom.hex, "body { }", "map", max_to_keep: 2)
expect(StylesheetCache.order(:id).pluck(:target)).to eq(["desktop", "desktop", "mobile", "mobile"])
end
end
end