Add slack message for warned user activity (#1077)
* add slack messsages for warned user activity * make slack messages async * add spec for warned user article creation * refactor observers * add specs * fix specs * enable and create observer specs
This commit is contained in:
parent
b865ad9f69
commit
94e55558f1
7 changed files with 57 additions and 3 deletions
10
app/observers/application_observer.rb
Normal file
10
app/observers/application_observer.rb
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
class ApplicationObserver < ActiveRecord::Observer
|
||||
def warned_user_ping(activity)
|
||||
if activity.user.warned == true
|
||||
SlackBot.ping "@#{activity.user.username} just posted.\nThey've been warned since #{activity.user.roles.where(name: 'warned')[0].updated_at.strftime('%d %B %Y')}\nhttps://dev.to#{activity.path}",
|
||||
channel: "warned-user-activity",
|
||||
username: "sloan_watch_bot",
|
||||
icon_emoji: ":sloan:"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
class ArticleObserver < ActiveRecord::Observer
|
||||
class ArticleObserver < ApplicationObserver
|
||||
def after_save(article)
|
||||
return if Rails.env.development?
|
||||
if article.published && article.published_at > 30.seconds.ago
|
||||
|
|
@ -8,6 +8,7 @@ class ArticleObserver < ActiveRecord::Observer
|
|||
icon_emoji: ":writing_hand:"
|
||||
|
||||
end
|
||||
warned_user_ping(article)
|
||||
rescue StandardError
|
||||
puts "error"
|
||||
end
|
||||
|
|
|
|||
8
app/observers/comment_observer.rb
Normal file
8
app/observers/comment_observer.rb
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
class CommentObserver < ApplicationObserver
|
||||
def after_save(comment)
|
||||
return if Rails.env.development?
|
||||
warned_user_ping(comment)
|
||||
rescue StandardError
|
||||
puts "error"
|
||||
end
|
||||
end
|
||||
|
|
@ -31,7 +31,7 @@ module PracticalDeveloper
|
|||
config.autoload_paths += Dir["#{config.root}/app/sanitizers"]
|
||||
config.autoload_paths += Dir["#{config.root}/lib/"]
|
||||
|
||||
config.active_record.observers = :article_observer, :reaction_observer
|
||||
config.active_record.observers = :article_observer, :reaction_observer, :comment_observer
|
||||
config.active_job.queue_adapter = :delayed_job
|
||||
|
||||
config.middleware.use Rack::Deflater
|
||||
|
|
|
|||
17
spec/observers/article_observer_spec.rb
Normal file
17
spec/observers/article_observer_spec.rb
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
require "rails_helper"
|
||||
|
||||
RSpec.describe ArticleObserver, type: :observer do
|
||||
let(:user) { create(:user) }
|
||||
|
||||
before do
|
||||
allow(SlackBot).to receive(:ping).and_return(true)
|
||||
end
|
||||
|
||||
it "pings slack if user with warned role creates an article" do
|
||||
user.add_role :warned
|
||||
Article.observers.enable :article_observer do
|
||||
create(:article, user_id: user.id)
|
||||
end
|
||||
expect(SlackBot).to have_received(:ping).twice
|
||||
end
|
||||
end
|
||||
18
spec/observers/comment_observer_spec.rb
Normal file
18
spec/observers/comment_observer_spec.rb
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
require "rails_helper"
|
||||
|
||||
RSpec.describe CommentObserver, type: :observer do
|
||||
let(:user) { create(:user) }
|
||||
let(:article) { create(:article) }
|
||||
|
||||
before do
|
||||
allow(SlackBot).to receive(:ping).and_return(true)
|
||||
end
|
||||
|
||||
it "pings slack if user with warned role creates a comment" do
|
||||
user.add_role :warned
|
||||
Comment.observers.enable :comment_observer do
|
||||
create(:comment, user_id: user.id, commentable_id: article.id)
|
||||
end
|
||||
expect(SlackBot).to have_received(:ping).twice
|
||||
end
|
||||
end
|
||||
|
|
@ -56,7 +56,7 @@ RSpec.describe "ArticlesCreate", type: :request do
|
|||
post "/articles", params: {
|
||||
article: {
|
||||
title: new_title,
|
||||
body_markdown: "---\ntitle: hey hey hahuu\npublished: false\nseries: helloyo\n---\nYo ho ho#{rand(100)}",
|
||||
body_markdown: "---\ntitle: hey hey hahuu\npublished: false\nseries: helloyo\n---\nYo ho ho#{rand(100)}"
|
||||
}
|
||||
}
|
||||
expect(Collection.last.slug).to eq("helloyo")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue