[CW-1342]: Inbox deletion in background job (#6708)

This commit is contained in:
Tejaswini Chile
2023-03-20 13:46:07 +05:30
committed by GitHub
parent 0c9f129c74
commit 4f936aada5
3 changed files with 18 additions and 9 deletions

View File

@@ -82,8 +82,8 @@ class Api::V1::Accounts::InboxesController < Api::V1::Accounts::BaseController
end end
def destroy def destroy
@inbox.destroy! ::DeleteObjectJob.perform_later(@inbox) if @inbox.present?
head :ok render status: :ok, json: { message: I18n.t('messages.inbox_deletetion_response') }
end end
private private

View File

@@ -34,6 +34,7 @@ en:
messages: messages:
reset_password_success: Woot! Request for password reset is successful. Check your mail for instructions. 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. 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: errors:
validations: validations:

View File

@@ -1,6 +1,8 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe 'Inboxes API', type: :request do RSpec.describe 'Inboxes API', type: :request do
include ActiveJob::TestHelper
let(:account) { create(:account) } let(:account) { create(:account) }
let(:agent) { create(:user, account: account, role: :agent) } let(:agent) { create(:user, account: account, role: :agent) }
let(:admin) { create(:user, account: account, role: :administrator) } let(:admin) { create(:user, account: account, role: :administrator) }
@@ -250,9 +252,11 @@ RSpec.describe 'Inboxes API', type: :request do
end end
it 'delete inbox avatar for administrator user' do it 'delete inbox avatar for administrator user' do
delete "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}/avatar", perform_enqueued_jobs(only: DeleteObjectJob) do
headers: admin.create_new_auth_token, delete "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}/avatar",
as: :json headers: admin.create_new_auth_token,
as: :json
end
expect { inbox.avatar.attachment.reload }.to raise_error(ActiveRecord::RecordNotFound) expect { inbox.avatar.attachment.reload }.to raise_error(ActiveRecord::RecordNotFound)
expect(response).to have_http_status(:success) 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) } let(:admin) { create(:user, account: account, role: :administrator) }
it 'deletes inbox' do it 'deletes inbox' do
delete "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}", perform_enqueued_jobs(only: DeleteObjectJob) do
headers: admin.create_new_auth_token, delete "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}",
as: :json headers: admin.create_new_auth_token,
as: :json
end
json_response = JSON.parse(response.body)
expect(response).to have_http_status(:success) 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 end
it 'is unable to delete inbox of another account' do it 'is unable to delete inbox of another account' do