From 2b6361369e280ce6cfb7c49cdc9e0168b2edaa6b Mon Sep 17 00:00:00 2001 From: evazion Date: Fri, 16 Aug 2019 20:49:35 -0500 Subject: [PATCH] jobs: migrate aliases/implications to ActiveJob. --- app/jobs/process_tag_alias_job.rb | 8 ++++++++ app/jobs/process_tag_implication_job.rb | 8 ++++++++ app/models/tag_alias.rb | 8 +++----- app/models/tag_implication.rb | 4 ++-- test/unit/tag_implication_test.rb | 18 +++++++++++------- 5 files changed, 32 insertions(+), 14 deletions(-) create mode 100644 app/jobs/process_tag_alias_job.rb create mode 100644 app/jobs/process_tag_implication_job.rb diff --git a/app/jobs/process_tag_alias_job.rb b/app/jobs/process_tag_alias_job.rb new file mode 100644 index 000000000..28b636d94 --- /dev/null +++ b/app/jobs/process_tag_alias_job.rb @@ -0,0 +1,8 @@ +class ProcessTagAliasJob < ApplicationJob + queue_as :default + queue_with_priority 20 + + def perform(tag_alias, update_topic: true) + tag_alias.process!(update_topic: update_topic) + end +end diff --git a/app/jobs/process_tag_implication_job.rb b/app/jobs/process_tag_implication_job.rb new file mode 100644 index 000000000..f221b699b --- /dev/null +++ b/app/jobs/process_tag_implication_job.rb @@ -0,0 +1,8 @@ +class ProcessTagImplicationJob < ApplicationJob + queue_as :default + queue_with_priority 20 + + def perform(tag_implication, update_topic: true) + tag_implication.process!(update_topic: update_topic) + end +end diff --git a/app/models/tag_alias.rb b/app/models/tag_alias.rb index ab4c16704..8c4740c10 100644 --- a/app/models/tag_alias.rb +++ b/app/models/tag_alias.rb @@ -6,11 +6,9 @@ class TagAlias < TagRelationship validate :mininum_antecedent_count, on: :create, unless: :skip_secondary_validations module ApprovalMethods - def approve!(update_topic: true, approver: CurrentUser.user) - CurrentUser.scoped(approver) do - update(status: "queued", approver_id: approver.id) - delay(:queue => "default").process!(update_topic: update_topic) - end + def approve!(approver: CurrentUser.user, update_topic: true) + update(approver: approver, status: "queued") + ProcessTagAliasJob.perform_later(self, update_topic: update_topic) end end diff --git a/app/models/tag_implication.rb b/app/models/tag_implication.rb index f50f07c08..7fb537844 100644 --- a/app/models/tag_implication.rb +++ b/app/models/tag_implication.rb @@ -163,8 +163,8 @@ class TagImplication < TagRelationship end def approve!(approver: CurrentUser.user, update_topic: true) - update(status: "queued", approver_id: approver.id) - delay(:queue => "default").process!(update_topic: update_topic) + update(approver: approver, status: "queued") + ProcessTagImplicationJob.perform_later(self, update_topic: update_topic) end def reject!(update_topic: true) diff --git a/test/unit/tag_implication_test.rb b/test/unit/tag_implication_test.rb index f1a656d53..804c25eac 100644 --- a/test/unit/tag_implication_test.rb +++ b/test/unit/tag_implication_test.rb @@ -245,8 +245,11 @@ class TagImplicationTest < ActiveSupport::TestCase p1 = FactoryBot.create(:post, :tag_string => "aaa bbb ccc") ti1 = FactoryBot.create(:tag_implication, :antecedent_name => "aaa", :consequent_name => "xxx") ti2 = FactoryBot.create(:tag_implication, :antecedent_name => "aaa", :consequent_name => "yyy") - ti1.approve! - ti2.approve! + + perform_enqueued_jobs do + ti1.approve! + ti2.approve! + end assert_equal("aaa bbb ccc xxx yyy", p1.reload.tag_string) end @@ -261,12 +264,13 @@ class TagImplicationTest < ActiveSupport::TestCase should "update the topic when processed" do assert_difference("ForumPost.count") do - @implication.approve! + perform_enqueued_jobs do + @implication.approve! + end end - @post.reload - @topic.reload - assert_match(/The tag implication .* has been approved/, @post.body) - assert_equal("[APPROVED] Tag implication: aaa -> bbb", @topic.title) + + assert_match(/The tag implication .* has been approved/, @post.reload.body) + assert_equal("[APPROVED] Tag implication: aaa -> bbb", @topic.reload.title) end should "update the topic when rejected" do