Skip to content

Commit

Permalink
feat: Delete notification by id API (#8430)
Browse files Browse the repository at this point in the history
  • Loading branch information
muhsin-k committed Nov 29, 2023
1 parent 683f9d9 commit bc6e3e5
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 2 deletions.
7 changes: 6 additions & 1 deletion app/controllers/api/v1/accounts/notifications_controller.rb
@@ -1,7 +1,7 @@
class Api::V1::Accounts::NotificationsController < Api::V1::Accounts::BaseController
RESULTS_PER_PAGE = 15

before_action :fetch_notification, only: [:update]
before_action :fetch_notification, only: [:update, :destroy]
before_action :set_primary_actor, only: [:read_all]
before_action :set_current_page, only: [:index]

Expand All @@ -28,6 +28,11 @@ def update
render json: @notification
end

def destroy
@notification.destroy
head :ok
end

def unread_count
@unread_count = current_user.notifications.where(account_id: current_account.id, read_at: nil).count
render json: @unread_count
Expand Down
2 changes: 1 addition & 1 deletion config/routes.rb
Expand Up @@ -166,7 +166,7 @@
end
end

resources :notifications, only: [:index, :update] do
resources :notifications, only: [:index, :update, :destroy] do
collection do
post :read_all
get :unread_count
Expand Down
26 changes: 26 additions & 0 deletions spec/controllers/api/v1/accounts/notifications_controller_spec.rb
Expand Up @@ -127,4 +127,30 @@
end
end
end

describe 'DELETE /api/v1/accounts/{account.id}/notifications/:id' do
let(:admin) { create(:user, account: account, role: :administrator) }
let!(:notification) { create(:notification, account: account, user: admin) }

context 'when it is an unauthenticated user' do
it 'returns unauthorized' do
delete "/api/v1/accounts/#{account.id}/notifications/#{notification.id}"

expect(response).to have_http_status(:unauthorized)
end
end

context 'when it is an authenticated user' do
let(:admin) { create(:user, account: account, role: :administrator) }

it 'deletes the notification' do
delete "/api/v1/accounts/#{account.id}/notifications/#{notification.id}",
headers: admin.create_new_auth_token,
as: :json

expect(response).to have_http_status(:success)
expect(Notification.count).to eq(0)
end
end
end
end

0 comments on commit bc6e3e5

Please sign in to comment.