2023-02-02 16:41:19 +01:00
|
|
|
# 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
|
2023-02-24 17:26:55 +01:00
|
|
|
assert_match Mime[:json].to_s, response.content_type
|
2023-02-02 16:41:19 +01:00
|
|
|
|
|
|
|
# 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,
|
2023-02-03 12:29:18 +01:00
|
|
|
notification_type: 'notify_admin_when_project_published',
|
2023-02-02 16:41:19 +01:00
|
|
|
in_system: false,
|
|
|
|
email: false
|
|
|
|
}
|
|
|
|
}.to_json,
|
|
|
|
headers: default_headers
|
|
|
|
|
|
|
|
# Check response format & status
|
|
|
|
assert_equal 200, response.status, response.body
|
2023-02-24 17:26:55 +01:00
|
|
|
assert_match Mime[:json].to_s, response.content_type
|
2023-02-02 16:41:19 +01:00
|
|
|
|
|
|
|
# Check the status was updated
|
|
|
|
res = json_response(response.body)
|
|
|
|
assert_equal 1, res[:id]
|
2023-02-03 12:29:18 +01:00
|
|
|
assert_equal 'notify_admin_when_project_published', res[:notification_type]
|
|
|
|
assert_equal false, res[:in_system]
|
|
|
|
assert_equal false, res[:email]
|
2023-02-02 16:41:19 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
test 'bulk update notification preference' do
|
|
|
|
patch '/api/notification_preferences/bulk_update',
|
|
|
|
params: {
|
|
|
|
notification_preferences: [
|
|
|
|
{
|
|
|
|
id: 1,
|
|
|
|
user_id: 1,
|
2023-02-03 12:29:18 +01:00
|
|
|
notification_type: 'notify_admin_when_project_published',
|
2023-02-02 16:41:19 +01:00
|
|
|
in_system: false,
|
|
|
|
email: false
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: 2,
|
|
|
|
user_id: 1,
|
2023-02-03 12:29:18 +01:00
|
|
|
notification_type: 'notify_project_collaborator_to_valid',
|
2023-02-02 16:41:19 +01:00
|
|
|
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
|