Skip to content

Commit f8c93f1

Browse files
authored
Merge pull request #4113 from Growstuff/delete-openfarm-pictures-rake-task
Add rake task to delete pictures with source OpenFarm
2 parents d887d5c + 8006d26 commit f8c93f1

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

lib/tasks/openfarm.rake

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,13 @@ namespace :openfarm do
88
Rails.logger = Logger.new(STDOUT)
99
OpenfarmService.new.import!
1010
end
11+
12+
desc "Delete all pictures with source OpenFarm"
13+
task delete_pictures: :environment do
14+
puts "Deleting pictures with source OpenFarm..."
15+
photos_to_delete = Photo.where(source: 'openfarm')
16+
count = photos_to_delete.count
17+
photos_to_delete.destroy_all
18+
puts "Deleted #{count} pictures."
19+
end
1120
end

spec/tasks/openfarm_rake_spec.rb

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# frozen_string_literal: true
2+
3+
require 'rails_helper'
4+
require 'rake'
5+
6+
describe 'openfarm:delete_pictures' do
7+
before(:all) do
8+
Rails.application.load_tasks
9+
end
10+
11+
# We need to do this because Rake tasks normally output to STDOUT, but we
12+
# don't want to clutter up the test output.
13+
before(:each) do
14+
$stdout = StringIO.new
15+
end
16+
17+
after(:each) do
18+
$stdout = STDOUT
19+
end
20+
21+
it 'deletes pictures with source OpenFarm' do
22+
create(:photo, source: 'OpenFarm')
23+
create(:photo, source: 'flickr')
24+
25+
expect(Photo.where(source: 'OpenFarm').count).to eq(1)
26+
expect(Photo.where(source: 'flickr').count).to eq(1)
27+
28+
Rake::Task['openfarm:delete_pictures'].invoke
29+
30+
expect(Photo.where(source: 'OpenFarm').count).to eq(0)
31+
expect(Photo.where(source: 'flickr').count).to eq(1)
32+
end
33+
end

0 commit comments

Comments
 (0)