1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-11-29 10:24:20 +01:00
fab-manager/test/integration/notifications/notification_preferences_test.rb
2023-03-22 10:58:22 +01:00

86 lines
2.9 KiB
Ruby

# frozen_string_literal: true
require 'test_helper'
class NotificationPreferencesTest < ActionDispatch::IntegrationTest
def setup
@admin = User.find_by(username: 'admin')
login_as(@admin, scope: :user)
end
test 'Index lists all notification preferences for a user' do
get '/api/notification_preferences'
# Check response format & status
assert_equal 200, response.status, response.body
assert_match Mime[:json].to_s, response.content_type
# Check the list items are ok and don't include other users' notification preferences
notification_preferences = json_response(response.body)
assert_not_equal notification_preferences.count, 0
assert_equal NotificationPreference.where(user: @admin).count, notification_preferences.count
end
test 'update a notification preference' do
patch '/api/notification_preferences/1',
params: {
notification_preference: {
id: 1,
user_id: 1,
notification_type: 'notify_admin_when_project_published',
in_system: false,
email: false
}
}.to_json,
headers: default_headers
# Check response format & status
assert_equal 200, response.status, response.body
assert_match Mime[:json].to_s, response.content_type
# Check the status was updated
res = json_response(response.body)
assert_equal 1, res[:id]
assert_equal 'notify_admin_when_project_published', res[:notification_type]
assert_equal false, res[:in_system]
assert_equal false, res[:email]
end
test 'bulk update notification preference' do
patch '/api/notification_preferences/bulk_update',
params: {
notification_preferences: [
{
id: 1,
user_id: 1,
notification_type: 'notify_admin_when_project_published',
in_system: false,
email: false
},
{
id: 2,
user_id: 1,
notification_type: 'notify_project_collaborator_to_valid',
in_system: false,
email: false
}
]
}.to_json,
headers: default_headers
# Check response format & status
assert_equal 204, response.status, response.body
# Check records
first_notification_preference = NotificationPreference.find(1)
assert_not_nil first_notification_preference, 'notification preference was not found in database'
assert_equal first_notification_preference.email, false
assert_equal first_notification_preference.in_system, false
second_notification_preference = NotificationPreference.find(2)
assert_not_nil second_notification_preference, 'notification preference was not found in database'
assert_equal second_notification_preference.email, false
assert_equal second_notification_preference.in_system, false
end
end