From 4f936aada54cfb3a807810a4419504054ae9c4e3 Mon Sep 17 00:00:00 2001 From: Tejaswini Chile Date: Mon, 20 Mar 2023 13:46:07 +0530 Subject: [PATCH] [CW-1342]: Inbox deletion in background job (#6708) --- .../api/v1/accounts/inboxes_controller.rb | 4 ++-- config/locales/en.yml | 1 + .../v1/accounts/inboxes_controller_spec.rb | 22 +++++++++++++------ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/app/controllers/api/v1/accounts/inboxes_controller.rb b/app/controllers/api/v1/accounts/inboxes_controller.rb index 24f797025..20402b5d1 100644 --- a/app/controllers/api/v1/accounts/inboxes_controller.rb +++ b/app/controllers/api/v1/accounts/inboxes_controller.rb @@ -82,8 +82,8 @@ class Api::V1::Accounts::InboxesController < Api::V1::Accounts::BaseController end def destroy - @inbox.destroy! - head :ok + ::DeleteObjectJob.perform_later(@inbox) if @inbox.present? + render status: :ok, json: { message: I18n.t('messages.inbox_deletetion_response') } end private diff --git a/config/locales/en.yml b/config/locales/en.yml index d395cb54f..375e70127 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -34,6 +34,7 @@ en: messages: reset_password_success: Woot! Request for password reset is successful. Check your mail for instructions. reset_password_failure: Uh ho! We could not find any user with the specified email. + inbox_deletetion_response: Your inbox deletion request will be processed in some time. errors: validations: diff --git a/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb b/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb index 577ed0365..90fbf68c6 100644 --- a/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb @@ -1,6 +1,8 @@ require 'rails_helper' RSpec.describe 'Inboxes API', type: :request do + include ActiveJob::TestHelper + let(:account) { create(:account) } let(:agent) { create(:user, account: account, role: :agent) } let(:admin) { create(:user, account: account, role: :administrator) } @@ -250,9 +252,11 @@ RSpec.describe 'Inboxes API', type: :request do end it 'delete inbox avatar for administrator user' do - delete "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}/avatar", - headers: admin.create_new_auth_token, - as: :json + perform_enqueued_jobs(only: DeleteObjectJob) do + delete "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}/avatar", + headers: admin.create_new_auth_token, + as: :json + end expect { inbox.avatar.attachment.reload }.to raise_error(ActiveRecord::RecordNotFound) expect(response).to have_http_status(:success) @@ -283,12 +287,16 @@ RSpec.describe 'Inboxes API', type: :request do let(:admin) { create(:user, account: account, role: :administrator) } it 'deletes inbox' do - delete "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}", - headers: admin.create_new_auth_token, - as: :json + perform_enqueued_jobs(only: DeleteObjectJob) do + delete "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}", + headers: admin.create_new_auth_token, + as: :json + end + + json_response = JSON.parse(response.body) expect(response).to have_http_status(:success) - expect { inbox.reload }.to raise_exception(ActiveRecord::RecordNotFound) + expect(json_response['message']).to eq('Your inbox deletion request will be processed in some time.') end it 'is unable to delete inbox of another account' do