Add tests for stalled detection
This commit is contained in:
@@ -17,6 +17,6 @@ module Comment::Eventable
|
||||
end
|
||||
|
||||
def track_creation
|
||||
track_event("created", collection: card.collection)
|
||||
track_event("created", collection: card.collection, creator: creator)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,44 @@
|
||||
require "test_helper"
|
||||
|
||||
class Card::ActivitySpike::DetectorTest < ActiveSupport::TestCase
|
||||
include CardActivityTestHelper
|
||||
|
||||
setup do
|
||||
Current.session = sessions(:david)
|
||||
@card = cards(:logo)
|
||||
end
|
||||
|
||||
test "detect multiple people commenting" do
|
||||
assert_activity_spike_detected do
|
||||
multiple_people_comment_on(@card)
|
||||
end
|
||||
end
|
||||
|
||||
test "detect assignments" do
|
||||
assert_activity_spike_detected do
|
||||
@card.toggle_assignment users(:kevin)
|
||||
end
|
||||
end
|
||||
|
||||
test "refresh the activity spike on new spikes" do
|
||||
multiple_people_comment_on(@card)
|
||||
|
||||
@card = Card.find(@card.id)
|
||||
|
||||
original_last_spike_at = @card.activity_spike.updated_at
|
||||
travel 2.months
|
||||
|
||||
multiple_people_comment_on(@card.reload)
|
||||
|
||||
assert @card.reload.activity_spike.updated_at > original_last_spike_at
|
||||
end
|
||||
|
||||
private
|
||||
def assert_activity_spike_detected(card: @card)
|
||||
assert card.activity_spike.blank?
|
||||
perform_enqueued_jobs only: Card::ActivitySpike::DetectionJob do
|
||||
yield
|
||||
end
|
||||
assert card.reload.activity_spike.present?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
require "test_helper"
|
||||
|
||||
class Card::StallableTest < ActiveSupport::TestCase
|
||||
include CardActivityTestHelper
|
||||
|
||||
setup do
|
||||
Current.session = sessions(:david)
|
||||
end
|
||||
@@ -22,15 +24,9 @@ class Card::StallableTest < ActiveSupport::TestCase
|
||||
# More fine-grained testing in Card::ActivitySpike::Detector
|
||||
test "detect activity spikes" do
|
||||
assert_not cards(:logo).stalled?
|
||||
|
||||
perform_enqueued_jobs only: Card::ActivitySpike::DetectionJob do
|
||||
4.times do |index|
|
||||
cards(:logo).comments.create(body: "Comment number #{index}")
|
||||
end
|
||||
end
|
||||
multiple_people_comment_on(cards(:logo))
|
||||
|
||||
travel_to 1.month.from_now
|
||||
|
||||
assert cards(:logo).reload.stalled?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
module CardActivityTestHelper
|
||||
def multiple_people_comment_on(card, times: 4, people: users(:david, :kevin, :jz))
|
||||
perform_enqueued_jobs only: Card::ActivitySpike::DetectionJob do
|
||||
times.times do |index|
|
||||
creator = people[index % people.size]
|
||||
card.comments.create!(body: "Comment number #{index}", creator: creator)
|
||||
travel 1.second
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user