Skip to content

Commit e34dc71

Browse files
committed
Don't log updates for ingested resources if no fields were changed. Fixes #1279
1 parent 20329b7 commit e34dc71

2 files changed

Lines changed: 44 additions & 1 deletion

File tree

lib/ingestors/ingestor.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,14 @@ def write_resources(type, resources, user, provider, source: nil)
213213
method: source.method
214214
}
215215
end
216-
resource.create_activity(update ? :update : :create, owner: user, parameters: activity_params)
216+
217+
if update
218+
if resource.log_update_activity?
219+
resource.create_activity(:update, owner: user, parameters: activity_params)
220+
end
221+
else
222+
resource.create_activity(:create, owner: user, parameters: activity_params)
223+
end
217224
@stats[key][update ? :updated : :added] += 1
218225
else
219226
@stats[key][:rejected] += 1

test/unit/ingestors/ingestor_test.rb

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,4 +392,40 @@ def run_filter(source_filter)
392392
end
393393
end
394394

395+
test 'does not log useless update activities' do
396+
user = users(:scraper_user)
397+
provider = content_providers(:goblet)
398+
url = 'http://example.com/cool-course-summer'
399+
400+
assert provider.events.where(url: url).any?
401+
event = OpenStruct.new(url: 'http://example.com/cool-course-summer',
402+
title: 'Summer Course on Learning Stuff')
403+
404+
ingestor = Ingestors::Ingestor.new
405+
ingestor.instance_variable_set(:@events, [event])
406+
407+
assert_no_difference('provider.events.count') do
408+
assert_no_difference('PublicActivity::Activity.where(key: "event.create").count') do
409+
assert_difference('PublicActivity::Activity.where(key: "event.update").count', 1) do
410+
assert_difference('PublicActivity::Activity.where(key: "event.update_parameter").count', 2) do # Title and slug are updated
411+
ingestor.write(user, provider)
412+
end
413+
end
414+
end
415+
end
416+
417+
ingestor = Ingestors::Ingestor.new
418+
ingestor.instance_variable_set(:@events, [event])
419+
420+
assert_no_difference('provider.events.count') do
421+
assert_no_difference('PublicActivity::Activity.where(key: "event.create").count') do
422+
assert_no_difference('PublicActivity::Activity.where(key: "event.update").count') do
423+
assert_no_difference('PublicActivity::Activity.where(key: "event.update_parameter").count') do
424+
ingestor.write(user, provider) # Nothing changed so don't log
425+
end
426+
end
427+
end
428+
end
429+
end
430+
395431
end

0 commit comments

Comments
 (0)