Refactoring: Migrated TicketOnlineNotificationSeenJob from Delayed::Job to Active Job.
This commit is contained in:
parent
4044394139
commit
953d902a74
5 changed files with 46 additions and 36 deletions
21
app/jobs/ticket_online_notification_seen_job.rb
Normal file
21
app/jobs/ticket_online_notification_seen_job.rb
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
class TicketOnlineNotificationSeenJob < ApplicationJob
|
||||||
|
def perform(ticket_id, user_id)
|
||||||
|
user_id = user_id || 1
|
||||||
|
|
||||||
|
# set all online notifications to seen
|
||||||
|
Transaction.execute do
|
||||||
|
ticket = Ticket.lookup(id: ticket_id)
|
||||||
|
OnlineNotification.list_by_object('Ticket', ticket_id).each do |notification|
|
||||||
|
next if notification.seen
|
||||||
|
|
||||||
|
seen = ticket.online_notification_seen_state(notification.user_id)
|
||||||
|
next if !seen
|
||||||
|
next if seen == notification.seen
|
||||||
|
|
||||||
|
notification.seen = true
|
||||||
|
notification.updated_by_id = user_id
|
||||||
|
notification.save!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -27,6 +27,6 @@ class Observer::Ticket::OnlineNotificationSeen < ActiveRecord::Observer
|
||||||
|
|
||||||
# set all online notifications to seen
|
# set all online notifications to seen
|
||||||
# send background job
|
# send background job
|
||||||
Delayed::Job.enqueue(Observer::Ticket::OnlineNotificationSeen::BackgroundJob.new(record.id, record.updated_by_id))
|
TicketOnlineNotificationSeenJob.perform_later(record.id, record.updated_by_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
class Observer::Ticket::OnlineNotificationSeen::BackgroundJob
|
|
||||||
def initialize(ticket_id, user_id)
|
|
||||||
@ticket_id = ticket_id
|
|
||||||
@user_id = user_id || 1
|
|
||||||
end
|
|
||||||
|
|
||||||
def perform
|
|
||||||
|
|
||||||
# set all online notifications to seen
|
|
||||||
Transaction.execute do
|
|
||||||
ticket = Ticket.lookup(id: @ticket_id)
|
|
||||||
OnlineNotification.list_by_object('Ticket', @ticket_id).each do |notification|
|
|
||||||
next if notification.seen
|
|
||||||
|
|
||||||
seen = ticket.online_notification_seen_state(notification.user_id)
|
|
||||||
next if !seen
|
|
||||||
next if seen == notification.seen
|
|
||||||
|
|
||||||
notification.seen = true
|
|
||||||
notification.updated_by_id = @user_id
|
|
||||||
notification.save!
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -357,7 +357,7 @@ returns
|
||||||
|
|
||||||
=begin
|
=begin
|
||||||
|
|
||||||
check if online notifcation should be shown in general as already seen with current state
|
check if online notification should be shown in general as already seen with current state
|
||||||
|
|
||||||
ticket = Ticket.find(1)
|
ticket = Ticket.find(1)
|
||||||
seen = ticket.online_notification_seen_state(user_id_check)
|
seen = ticket.online_notification_seen_state(user_id_check)
|
||||||
|
@ -366,15 +366,6 @@ returns
|
||||||
|
|
||||||
result = true # or false
|
result = true # or false
|
||||||
|
|
||||||
check if online notifcation should be shown for this user as already seen with current state
|
|
||||||
|
|
||||||
ticket = Ticket.find(1)
|
|
||||||
seen = ticket.online_notification_seen_state(check_user_id)
|
|
||||||
|
|
||||||
returns
|
|
||||||
|
|
||||||
result = true # or false
|
|
||||||
|
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def online_notification_seen_state(user_id_check = nil)
|
def online_notification_seen_state(user_id_check = nil)
|
||||||
|
|
23
spec/jobs/ticket_online_notification_seen_job_spec.rb
Normal file
23
spec/jobs/ticket_online_notification_seen_job_spec.rb
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe TicketOnlineNotificationSeenJob, type: :job do
|
||||||
|
let!(:user) { create(:user) }
|
||||||
|
let!(:other_user) { create(:user) }
|
||||||
|
let!(:ticket) { create(:ticket, owner: user, created_by_id: user.id) }
|
||||||
|
let!(:online_notification) do
|
||||||
|
create(:online_notification, o_id: ticket.id, user_id: user.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'checks if online notification has not been seen' do
|
||||||
|
expect(online_notification.reload.seen).to be false
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'checks if online notification has been seen' do
|
||||||
|
ticket.state_id = Ticket::State.lookup(name: 'closed').id
|
||||||
|
ticket.save!
|
||||||
|
|
||||||
|
expect do
|
||||||
|
TicketOnlineNotificationSeenJob.perform_now(ticket.id, user.id)
|
||||||
|
end.to change { online_notification.reload.seen }
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue