feat: Sort Notification API changes (#8865)
* feat: Inbox sort API changes * Update notification_finder.rb * Update notification_finder.rb * Update notification_finder.rb
This commit is contained in:
@@ -26,6 +26,7 @@ class NotificationFinder
|
||||
|
||||
def set_up
|
||||
find_all_notifications
|
||||
filter_by_read_status
|
||||
filter_by_status
|
||||
end
|
||||
|
||||
@@ -37,11 +38,15 @@ class NotificationFinder
|
||||
@notifications = @notifications.where('snoozed_until > ?', DateTime.now.utc) if params[:status] == 'snoozed'
|
||||
end
|
||||
|
||||
def filter_by_read_status
|
||||
@notifications = @notifications.where.not(read_at: nil) if params[:type] == 'read'
|
||||
end
|
||||
|
||||
def current_page
|
||||
params[:page] || 1
|
||||
end
|
||||
|
||||
def notifications
|
||||
@notifications.page(current_page).per(RESULTS_PER_PAGE).order(last_activity_at: :desc)
|
||||
@notifications.page(current_page).per(RESULTS_PER_PAGE).order(last_activity_at: params[:sort_order] || :desc)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -63,5 +63,42 @@ describe NotificationFinder do
|
||||
expect(result).to be 1
|
||||
end
|
||||
end
|
||||
|
||||
context 'when type read param is passed' do
|
||||
let(:params) { { type: 'read' } }
|
||||
|
||||
it 'returns only read notifications' do
|
||||
result = notification_finder.perform
|
||||
expect(result.length).to be 2
|
||||
end
|
||||
|
||||
it 'returns count' do
|
||||
result = notification_finder.count
|
||||
expect(result).to be 2
|
||||
end
|
||||
end
|
||||
|
||||
context 'when type read and snoozed param is passed' do
|
||||
let(:params) { { type: 'read', status: 'snoozed' } }
|
||||
|
||||
it 'returns only read notifications' do
|
||||
result = notification_finder.perform
|
||||
expect(result.length).to be 0
|
||||
end
|
||||
|
||||
it 'returns count' do
|
||||
result = notification_finder.count
|
||||
expect(result).to be 0
|
||||
end
|
||||
end
|
||||
|
||||
context 'when sort order is passed' do
|
||||
let(:params) { { sort_order: :asc } }
|
||||
|
||||
it 'returns notifications in ascending order' do
|
||||
result = notification_finder.perform
|
||||
expect(result.first.last_activity_at).to be < result.last.last_activity_at
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user