Files
osem/app/views/admin/events/_datatable_row.haml
Andrew Kvalheim 1563881153 Add user to cache dependencies of vote in events index
When fragment caching is enabled—

    --- a/config/environments/test.rb
    +++ b/config/environments/test.rb
    @@ -27 +26,0 @@
    -  config.action_controller.perform_caching = false
    @@ -29 +27,0 @@
    -  config.cache_store = :null_store

—the test of voting fails with:

    expected to find text "Not rated" in "…You voted: 3/5…"
    # ./spec/features/voting_spec.rb:15
    # ./spec/features/voting_spec.rb:13
    # ./spec/features/voting_spec.rb:57

i.e. the vote displayed on the event index is another user’s vote,
because the fragment’s cache dependencies don’t include the current
user.

re #2767
2023-03-01 11:43:50 -08:00

73 lines
2.3 KiB
Plaintext

- cache ['admin', conference_id, program, event, current_user] do
%tr{ id: "event-#{event.id}" }
%td
= event.id
%td
= link_to event.title,
admin_conference_program_event_path(conference_id, event)
- if rating_enabled
%td.col-md-1{ data: { order: event.average_rating } }
= render 'datatable_row_rating',
event: event,
show_votes: show_votes,
max_rating: max_rating
- if event.submitter
%td
= link_to event.submitter.name, admin_user_path(event.submitter)
- unless event.submitter.registrations.for_conference(event.conference)
%span.label.label-warning Unregistered
- else
%td.bg-danger
Unknown submitter
%td
- if event.speakers.any?
- event.speakers_ordered.each do |speaker|
.speaker
= link_to speaker.name, admin_user_path(speaker)
- unless speaker.registrations.for_conference(event.conference)
%span.label.label-danger Unregistered
- else
.small
No Speaker
- if @program.languages.present?
%td
= event.language
%td.text-center{ data: { order: event.require_registration.to_s } }
= event_switch_checkbox(event, :require_registration, conference_id)
- if event.require_registration
= link_to registered_text(event),
registrations_admin_conference_program_event_path(conference_id,
event),
class: 'btn btn-xs btn-default'
%td.text-center{ data: { order: event.is_highlight.to_s } }
= event_switch_checkbox(event, :is_highlight, conference_id)
%td
= event_type_dropdown(event, event_types, conference_id)
%td
= track_dropdown(event, tracks, conference_id)
%td
= difficulty_dropdown(event, difficulty_levels, conference_id)
%td
= state_dropdown(event, conference_id, email_settings)
%td.text-center
= link_to "#{event.comments_count}",
admin_conference_program_event_path(conference_id, event),
anchor: 'comments-div'
%td.text-center
= link_to new_admin_conference_survey_path(@conference.short_title,
survey: { surveyable_type: 'Event', surveyable_id: event.id }),
class: 'btn btn-success' do
.fa-solid.fa-plus