perf(procedure): description view caching
This commit is contained in:
parent
5d747ba0c2
commit
3b9285a00b
5 changed files with 74 additions and 42 deletions
|
@ -25,8 +25,6 @@ module Users
|
|||
@preview_dossiers = @dossiers.take(3)
|
||||
end
|
||||
|
||||
@usual_traitement_time = @procedure.stats_usual_traitement_time
|
||||
|
||||
render 'commencer/show'
|
||||
end
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
- unless @no_description
|
||||
.fr-accordions-group.fr-mb-3w
|
||||
- cache [procedure, "description"] do
|
||||
%section.fr-accordion
|
||||
%h2.fr-accordion__title
|
||||
%button.fr-accordion__btn{ "aria-controls" => "accordion-114", "aria-expanded" => "true" }
|
||||
|
@ -63,14 +64,14 @@
|
|||
%ul
|
||||
= render partial: "shared/procedure_pieces_jointes_list", collection: procedure.pieces_jointes_list_with_conditionnal, as: :pj
|
||||
|
||||
- if @usual_traitement_time.present?
|
||||
- if procedure.stats_usual_traitement_time
|
||||
%section.fr-accordion
|
||||
%h2.fr-accordion__title
|
||||
%button.fr-accordion__btn{ "aria-controls" => "accordion-117", "aria-expanded" => "false" }
|
||||
= t('shared.procedure_description.usual_traitement_time_title')
|
||||
|
||||
#accordion-117.fr-collapse
|
||||
= t('shared.procedure_description.usual_traitement_time_detail_html', traitement_time: distance_of_time_in_words(@usual_traitement_time), percentile: ProcedureStatsConcern::USUAL_TRAITEMENT_TIME_PERCENTILE, days: ProcedureStatsConcern::NB_DAYS_RECENT_DOSSIERS, href: statistiques_path(procedure.path) )
|
||||
= t('shared.procedure_description.usual_traitement_time_detail_html', traitement_time: distance_of_time_in_words(procedure.stats_usual_traitement_time), percentile: ProcedureStatsConcern::USUAL_TRAITEMENT_TIME_PERCENTILE, days: ProcedureStatsConcern::NB_DAYS_RECENT_DOSSIERS, href: statistiques_path(procedure.path) )
|
||||
|
||||
|
||||
- if procedure.persisted? && procedure.estimated_duration_visible?
|
||||
|
|
|
@ -770,12 +770,9 @@ describe ProcedureRevision do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'caching behavior' do
|
||||
describe 'caching behavior', caching: true do
|
||||
let(:procedure) { create(:procedure, :published, types_de_champ_public: types_de_champ_public) }
|
||||
|
||||
before { Rails.cache = ActiveSupport::Cache::MemoryStore.new }
|
||||
after { Rails.cache = ActiveSupport::Cache::NullStore.new }
|
||||
|
||||
context 'when a type de champ belonging to a draft revision is updated' do
|
||||
let(:draft_revision) { procedure.draft_revision }
|
||||
|
||||
|
|
16
spec/support/caching.rb
Normal file
16
spec/support/caching.rb
Normal file
|
@ -0,0 +1,16 @@
|
|||
RSpec.configure do |config|
|
||||
config.around(:all, :caching) do |example|
|
||||
caching_was = ActionController::Base.perform_caching
|
||||
cache_store_was = Rails.cache
|
||||
|
||||
Rails.cache = ActiveSupport::Cache::MemoryStore.new
|
||||
ActionController::Base.perform_caching = true
|
||||
ActionController::Base.cache_store = Rails.cache
|
||||
|
||||
example.run
|
||||
ensure
|
||||
Rails.cache = cache_store_was
|
||||
ActionController::Base.perform_caching = caching_was
|
||||
ActionController::Base.cache_store = Rails.cache
|
||||
end
|
||||
end
|
|
@ -48,7 +48,9 @@ describe 'shared/_procedure_description', type: :view do
|
|||
end
|
||||
|
||||
context 'when procedure has usual_traitement_time' do
|
||||
before { assign(:usual_traitement_time, 1.day) }
|
||||
before do
|
||||
allow(procedure).to receive(:stats_usual_traitement_time).and_return(1.day)
|
||||
end
|
||||
|
||||
it 'shows a usual traitement text' do
|
||||
subject
|
||||
|
@ -105,4 +107,22 @@ describe 'shared/_procedure_description', type: :view do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'caching', caching: true do
|
||||
it "works" do
|
||||
expect(procedure).to receive(:pieces_jointes_list?).once
|
||||
2.times { render partial: 'shared/procedure_description', locals: { procedure: } }
|
||||
end
|
||||
|
||||
it 'cache_key depends of revision' do
|
||||
render partial: 'shared/procedure_description', locals: { procedure: }
|
||||
expect(rendered).not_to have_text('new pj')
|
||||
|
||||
procedure.draft_revision.add_type_de_champ(type_champ: :piece_justificative, libelle: 'new pj')
|
||||
procedure.publish_revision!
|
||||
|
||||
render partial: 'shared/procedure_description', locals: { procedure: }
|
||||
expect(rendered).to have_text('new pj')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue