From 54ac832c9195c90393d3ac13758e4bb8bc720460 Mon Sep 17 00:00:00 2001 From: Karina Kwiatek Date: Wed, 16 Aug 2023 21:57:31 +0200 Subject: [PATCH] Ensure inbox caching timestamp gets updated when answering questions and returning to inbox --- app/models/answer.rb | 1 + spec/controllers/ajax/answer_controller_spec.rb | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/app/models/answer.rb b/app/models/answer.rb index 5e43464b..71417252 100644 --- a/app/models/answer.rb +++ b/app/models/answer.rb @@ -20,6 +20,7 @@ class Answer < ApplicationRecord after_create do Inbox.where(user: self.user, question: self.question).destroy_all + user.touch :inbox_updated_at # rubocop:disable Rails/SkipsModelValidations Notification.notify self.question.user, self unless self.question.user == self.user or self.question.user.nil? Subscription.subscribe self.user, self diff --git a/spec/controllers/ajax/answer_controller_spec.rb b/spec/controllers/ajax/answer_controller_spec.rb index dd2a1ca6..3e42c2e7 100644 --- a/spec/controllers/ajax/answer_controller_spec.rb +++ b/spec/controllers/ajax/answer_controller_spec.rb @@ -4,6 +4,8 @@ require "rails_helper" describe Ajax::AnswerController, :ajax_controller, type: :controller do + include ActiveSupport::Testing::TimeHelpers + let(:question) { FactoryBot.create(:question, user: FactoryBot.build(:user, privacy_allow_stranger_answers: asker_allows_strangers)) } let(:asker_allows_strangers) { true } @@ -327,6 +329,14 @@ describe Ajax::AnswerController, :ajax_controller, type: :controller do user.save expect { subject }.to(change { Inbox.where(question_id: answer.question.id, user_id: user.id).count }.by(1)) end + + it "updates the inbox caching timestamp for the user who answered" do + initial_timestamp = 1.day.ago + answer.user.update(inbox_updated_at: initial_timestamp) + freeze_time do + expect { subject }.to(change { answer.user.reload.inbox_updated_at }.from(initial_timestamp).to(DateTime.now)) + end + end end context "when the answer exists and was not made by the current user" do