diff --git a/app/jobs/articles/detect_human_language_job.rb b/app/jobs/articles/detect_human_language_job.rb deleted file mode 100644 index fa4b32928..000000000 --- a/app/jobs/articles/detect_human_language_job.rb +++ /dev/null @@ -1,12 +0,0 @@ -module Articles - class DetectHumanLanguageJob < ApplicationJob - queue_as :articles_detect_human_language - - def perform(article_id) - article = Article.find_by(id: article_id) - return unless article - - article.update_column(:language, LanguageDetector.new(article).detect) - end - end -end diff --git a/app/models/article.rb b/app/models/article.rb index 14be0840a..5e9e19b55 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -453,7 +453,7 @@ class Article < ApplicationRecord def detect_human_language return if language.present? - Articles::DetectHumanLanguageJob.perform_later(id) + update_column(:language, LanguageDetector.new(self).detect) end def async_score_calc diff --git a/spec/jobs/articles/detect_human_language_job_spec.rb b/spec/jobs/articles/detect_human_language_job_spec.rb deleted file mode 100644 index c314e2973..000000000 --- a/spec/jobs/articles/detect_human_language_job_spec.rb +++ /dev/null @@ -1,23 +0,0 @@ -require "rails_helper" - -RSpec.describe Articles::DetectHumanLanguageJob, type: :job do - include_examples "#enqueues_job", "articles_detect_human_language", [1] - - describe "#perform_now" do - context "with article" do - let_it_be(:article) { create(:article) } - - it "updates article language with detected language" do - described_class.perform_now(article.id) - - expect(article.language).to eql("en") - end - end - - context "without aritcle" do - it "does not error" do - expect { described_class.perform_now(nil) }.not_to raise_error - end - end - end -end diff --git a/spec/models/article_spec.rb b/spec/models/article_spec.rb index 6c0727bbc..cc05cc68c 100644 --- a/spec/models/article_spec.rb +++ b/spec/models/article_spec.rb @@ -612,18 +612,25 @@ RSpec.describe Article, type: :model do end describe "detect human language" do + let(:language_detector) { instance_double(LanguageDetector) } + + before do + allow(LanguageDetector).to receive(:new).and_return(language_detector) + allow(language_detector).to receive(:detect) + end + it "calls the human language detector" do article.language = "" - assert_enqueued_with(job: Articles::DetectHumanLanguageJob) do - article.save - end + article.save + + expect(language_detector).to have_received(:detect) end it "does not call the human language detector if there is already a language" do article.language = "en" - assert_no_enqueued_jobs(only: Articles::DetectHumanLanguageJob) do - article.save - end + article.save + + expect(language_detector).not_to have_received(:detect) end end end