Merge pull request #814 from basecamp/optimize-summarizable
Little refactor + missing test
This commit is contained in:
@@ -10,7 +10,7 @@ module User::DayTimeline::Summarizable
|
||||
end
|
||||
|
||||
def summarizable?
|
||||
!day.today? || events.count >= 10
|
||||
day.past? || summarizable_today?
|
||||
end
|
||||
|
||||
def summarize
|
||||
@@ -28,4 +28,9 @@ module User::DayTimeline::Summarizable
|
||||
def summarize_later
|
||||
User::DayTimeline::SummarizeJob.perform_later(self)
|
||||
end
|
||||
|
||||
private
|
||||
def summarizable_today?
|
||||
day.today? && events.count >= 10
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
require "test_helper"
|
||||
|
||||
class User::DayTimeline::SummarizableTest < ActiveSupport::TestCase
|
||||
include VcrTestHelper
|
||||
|
||||
setup do
|
||||
@user = users(:david)
|
||||
|
||||
freeze_timestamps
|
||||
|
||||
@day = events(:logo_published).reload.created_at
|
||||
@day_timeline = @user.timeline_for(@day, filter: @user.filters.new)
|
||||
end
|
||||
|
||||
test "summarize" do
|
||||
assert_not @day_timeline.summarized?
|
||||
assert @day_timeline.events.any?
|
||||
|
||||
summary = assert_difference -> { Event::ActivitySummary.count }, +1 do
|
||||
@day_timeline.summarize
|
||||
end
|
||||
|
||||
assert @day_timeline.summarized?
|
||||
|
||||
assert_equal summary, @day_timeline.summary
|
||||
|
||||
assert_no_difference -> { Event::ActivitySummary.count } do
|
||||
@day_timeline.summarize
|
||||
end
|
||||
end
|
||||
|
||||
test "past events are summarizable" do
|
||||
unfreeze_time
|
||||
|
||||
# Not summarizable in the future
|
||||
travel_to @day - 2.weeks
|
||||
assert_not @day_timeline.summarizable?
|
||||
|
||||
# Summarizable in the past
|
||||
travel_to @day + 1.day
|
||||
assert @day_timeline.summarizable?
|
||||
end
|
||||
end
|
||||
@@ -38,13 +38,11 @@ module VcrTestHelper
|
||||
VCR.use_cassette("#{@casette_name}_without_body", match_requests_on: [ :method, :uri ], &block)
|
||||
end
|
||||
|
||||
def freeze_timestamps(models = [ Event, Card, Comment ])
|
||||
def freeze_timestamps(models = [ Event, Card, Comment, Closure ], at: Time.zone.parse("2025-08-12 9am"))
|
||||
# Make sure we fix dates since they change the prompt and this gets VCR confused
|
||||
date = Time.zone.parse("2025-08-12 9am")
|
||||
|
||||
freeze_time date
|
||||
freeze_time at
|
||||
models.each do |klass|
|
||||
klass.update_all created_at: date
|
||||
klass.update_all created_at: at
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+1224
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user