mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-18 23:21:30 +08:00
75 lines
2.5 KiB
Ruby
75 lines
2.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
describe SystemNotificationsController, type: :controller do
|
|
login_user
|
|
render_views
|
|
let(:user) { subject.current_user }
|
|
|
|
describe 'Methods' do
|
|
let(:notifcation_one) { create :system_notification }
|
|
let(:notifcation_two) { create :system_notification, title: 'Special one' }
|
|
before do
|
|
create :user_system_notification,
|
|
user: user,
|
|
system_notification: notifcation_one
|
|
create :user_system_notification,
|
|
user: user,
|
|
system_notification: notifcation_two
|
|
end
|
|
|
|
it '#show return right result format' do
|
|
params = {
|
|
id: user.user_system_notifications.first.system_notification_id
|
|
}
|
|
get :show, format: :json, params: params
|
|
expect(response).to have_http_status(:ok)
|
|
body = JSON.parse(response.body)
|
|
expect(body).to include('id', 'modal_title', 'modal_body')
|
|
end
|
|
|
|
it '#mark_as_seen correctly set seen_at' do
|
|
params = {
|
|
notifications: user.user_system_notifications
|
|
.map(&:system_notification_id).to_s
|
|
}
|
|
get :mark_as_seen, format: :json, params: params
|
|
expect(response).to have_http_status(:ok)
|
|
body = JSON.parse(response.body)
|
|
expect(body['result']).to eq 'ok'
|
|
expect(user.user_system_notifications.where(seen_at: nil).count).to eq 0
|
|
end
|
|
|
|
it '#mark_as_read correctly set read_at' do
|
|
params = {
|
|
id: user.user_system_notifications.first.system_notification_id
|
|
}
|
|
get :mark_as_read, format: :json, params: params
|
|
expect(response).to have_http_status(:ok)
|
|
body = JSON.parse(response.body)
|
|
expect(body['result']).to eq 'ok'
|
|
expect(user.user_system_notifications.where(read_at: nil).count).to eq 1
|
|
end
|
|
|
|
it '#unseen_counter return right result' do
|
|
get :unseen_counter, format: :json
|
|
expect(response).to have_http_status(:ok)
|
|
body = JSON.parse(response.body)
|
|
expect(body['notificationNmber']).to eq 2
|
|
end
|
|
|
|
it '#index check next page link' do
|
|
notifications = create_list :system_notification, 50
|
|
notifications.each do |i|
|
|
create :user_system_notification,
|
|
user: user,
|
|
system_notification: i
|
|
end
|
|
get :index, format: :json
|
|
expect(response).to have_http_status(:ok)
|
|
body = JSON.parse(response.body)
|
|
expect(body['more_url']).to include('system_notifications.json?page=2')
|
|
end
|
|
end
|
|
end
|