From 4829d5513c3cde73035dfc595f87f6239ef447b2 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 10 Aug 2025 00:58:03 +0000 Subject: [PATCH] This commit adds a rake task to delete all pictures that have 'OpenFarm' as their source. This is useful for cleaning up data imported from OpenFarm. --- lib/tasks/openfarm.rake | 9 +++++++++ spec/tasks/openfarm_rake_spec.rb | 33 ++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 spec/tasks/openfarm_rake_spec.rb diff --git a/lib/tasks/openfarm.rake b/lib/tasks/openfarm.rake index 92ca9cc39..6268df6c9 100644 --- a/lib/tasks/openfarm.rake +++ b/lib/tasks/openfarm.rake @@ -8,4 +8,13 @@ namespace :openfarm do Rails.logger = Logger.new(STDOUT) OpenfarmService.new.import! end + + desc "Delete all pictures with source OpenFarm" + task delete_pictures: :environment do + puts "Deleting pictures with source OpenFarm..." + photos_to_delete = Photo.where(source: 'OpenFarm') + count = photos_to_delete.count + photos_to_delete.destroy_all + puts "Deleted #{count} pictures." + end end diff --git a/spec/tasks/openfarm_rake_spec.rb b/spec/tasks/openfarm_rake_spec.rb new file mode 100644 index 000000000..56681a43e --- /dev/null +++ b/spec/tasks/openfarm_rake_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'rake' + +describe 'openfarm:delete_pictures' do + before(:all) do + Rails.application.load_tasks + end + + # We need to do this because Rake tasks normally output to STDOUT, but we + # don't want to clutter up the test output. + before(:each) do + $stdout = StringIO.new + end + + after(:each) do + $stdout = STDOUT + end + + it 'deletes pictures with source OpenFarm' do + create(:photo, source: 'OpenFarm') + create(:photo, source: 'flickr') + + expect(Photo.where(source: 'OpenFarm').count).to eq(1) + expect(Photo.where(source: 'flickr').count).to eq(1) + + Rake::Task['openfarm:delete_pictures'].invoke + + expect(Photo.where(source: 'OpenFarm').count).to eq(0) + expect(Photo.where(source: 'flickr').count).to eq(1) + end +end