test/unit/cleaner_test.rb in foreman-tasks-0.9.6 vs test/unit/cleaner_test.rb in foreman-tasks-0.10.0
- old
+ new
@@ -1,13 +1,8 @@
require 'foreman_tasks_test_helper'
class TasksTest < ActiveSupport::TestCase
- before do
- # To stop dynflow from backing up actions, execution_plans and steps
- ForemanTasks.dynflow.world.persistence.adapter.stubs(:backup_to_csv)
- end
-
describe ForemanTasks::Cleaner do
it 'is able to delete tasks (including the dynflow plans) based on filter' do
cleaner = ForemanTasks::Cleaner.new(:filter => 'label = "Actions::User::Create"', :after => '10d')
tasks_to_delete = [FactoryGirl.create(:dynflow_task, :user_create_task),
@@ -15,11 +10,10 @@
tasks_to_keep = [FactoryGirl.create(:dynflow_task, :user_create_task) do |task|
task.started_at = task.ended_at = Time.zone.now
task.save
end,
FactoryGirl.create(:dynflow_task, :product_create_task)]
- cleaner.expects(:tasks_to_csv)
cleaner.delete
ForemanTasks::Task.where(id: tasks_to_delete).must_be_empty
ForemanTasks::Task.where(id: tasks_to_keep).order(:id).map(&:id).must_equal tasks_to_keep.map(&:id).sort
ForemanTasks.dynflow.world.persistence
@@ -36,11 +30,10 @@
task.started_at = task.ended_at = Time.zone.now
task.save
end]
tasks_to_keep = [FactoryGirl.create(:dynflow_task, :product_create_task)]
- cleaner.expects(:tasks_to_csv)
cleaner.delete
ForemanTasks::Task.where(id: tasks_to_delete).must_be_empty
ForemanTasks::Task.where(id: tasks_to_keep).must_equal tasks_to_keep
end
@@ -51,36 +44,15 @@
tasks_to_keep = [FactoryGirl.create(:dynflow_task, :user_create_task) do |task|
task.started_at = task.ended_at = Time.zone.now
task.save
end]
- cleaner.expects(:tasks_to_csv)
cleaner.delete
ForemanTasks::Task.where(id: tasks_to_delete).must_be_empty
ForemanTasks::Task.where(id: tasks_to_keep).must_equal tasks_to_keep
end
- it 'backs tasks up before deleting' do
- dir = '/tmp'
- cleaner = ForemanTasks::Cleaner.new(:filter => '', :after => '10d', :backup_dir => dir)
- tasks_to_delete = [FactoryGirl.create(:dynflow_task, :user_create_task),
- FactoryGirl.create(:dynflow_task, :product_create_task)]
-
- r, w = IO.pipe
- cleaner.expects(:with_backup_file)
- .with(dir, 'foreman_tasks.csv')
- .yields(w, false)
- cleaner.delete
- w.close
- header, *data = r.readlines.map(&:chomp)
- header.must_equal ForemanTasks::Task.attribute_names.join(',')
- expected_lines = tasks_to_delete.map { |task| task.attributes.values.join(',') }
- data.count.must_equal expected_lines.count
- expected_lines.each { |line| data.must_include line }
- ForemanTasks::Task.where(id: tasks_to_delete).must_be_empty
- end
-
class ActionWithCleanup < Actions::Base
def self.cleanup_after
'15d'
end
end
@@ -93,32 +65,9 @@
it 'searches for the actions that have the cleanup_after defined' do
ForemanTasks::Cleaner.stubs(:cleanup_settings =>
{ :actions => [{ :name => ActionWithCleanup.name, :after => '5d' }] })
ForemanTasks::Cleaner.actions_with_default_cleanup[ActionWithCleanup].must_equal '5d'
- end
-
- it 'deprecates the usage of :after' do
- Foreman::Deprecation.expects(:deprecation_warning)
- ForemanTasks::Cleaner.any_instance.expects(:delete)
- ForemanTasks::Cleaner.stubs(:cleanup_settings =>
- { :after => '1d' })
- ForemanTasks::Cleaner.stubs(:actions_with_default_cleanup).returns({})
- ForemanTasks::Cleaner.run({})
- end
-
- it 'generates filters from rules properly' do
- actions_with_default = { 'action1' => nil, 'action2' => nil }
- rules = [{ :after => nil },
- { :after => '10d', :filter => 'label = something', :states => %w[stopped paused] },
- { :after => '15d', :filter => 'label = something_else',
- :override_actions => true, :states => 'all' }]
- ForemanTasks::Cleaner.stubs(:cleanup_settings).returns(:rules => rules)
- r1, r2 = ForemanTasks::Cleaner.actions_by_rules actions_with_default
- r1[:filter].must_equal '(label !^ (action1, action2)) AND (label = something)'
- r1[:states].must_equal %w[stopped paused]
- r2[:filter].must_equal '(label = something_else)'
- r2[:states].must_equal []
end
end
end
end