diff --git a/plugins/community_track/lib/community_track_plugin/activation_job.rb b/plugins/community_track/lib/community_track_plugin/activation_job.rb new file mode 100644 index 0000000..9fc0b87 --- /dev/null +++ b/plugins/community_track/lib/community_track_plugin/activation_job.rb @@ -0,0 +1,12 @@ +class CommunityTrackPlugin::ActivationJob < Struct.new(:step_id) + + def self.find(step_id) + Delayed::Job.where(:handler => "--- !ruby/struct:CommunityTrackPlugin::ActivationJob \nstep_id: #{step_id}\n") + end + + def perform + step = CommunityTrackPlugin::Step.find(step_id) + step.publish + end + +end diff --git a/plugins/community_track/lib/community_track_plugin/step.rb b/plugins/community_track/lib/community_track_plugin/step.rb index d5d173e..6ffa00b 100644 --- a/plugins/community_track/lib/community_track_plugin/step.rb +++ b/plugins/community_track/lib/community_track_plugin/step.rb @@ -104,17 +104,4 @@ class CommunityTrackPlugin::Step < Folder tools.find(:first, :conditions => {:type => tool_type }) end - class CommunityTrackPlugin::ActivationJob < Struct.new(:step_id) - - def self.find(step_id) - Delayed::Job.where(:handler => "--- !ruby/struct:CommunityTrackPlugin::ActivationJob \nstep_id: #{step_id}\n") - end - - def perform - step = CommunityTrackPlugin::Step.find(step_id) - step.publish - end - - end - end diff --git a/plugins/community_track/test/unit/community_track_plugin/activation_job_test.rb b/plugins/community_track/test/unit/community_track_plugin/activation_job_test.rb new file mode 100644 index 0000000..ef68432 --- /dev/null +++ b/plugins/community_track/test/unit/community_track_plugin/activation_job_test.rb @@ -0,0 +1,38 @@ +require File.dirname(__FILE__) + '/../../test_helper' + +class ActivationJobTest < ActiveSupport::TestCase + + def setup + @profile = fast_create(Community) + @track = create_track('track', @profile) + @step = CommunityTrackPlugin::Step.new(:name => 'Step', :body => 'body', :profile => @profile, :parent => @track, :published => false, :end_date => Date.today, :start_date => Date.today) + Delayed::Job.destroy_all + end + + should 'return delayed job created with a specific step_id' do + step_id = 0 + CommunityTrackPlugin::ActivationJob.new(step_id) + assert CommunityTrackPlugin::ActivationJob.find(step_id) + end + + should 'change publish to true on perform delayed job in a active step' do + @step.start_date = Date.today + @step.end_date = Date.today + 2.days + @step.published = false + @step.save! + CommunityTrackPlugin::ActivationJob.new(@step.id).perform + @step.reload + assert @step.published + end + + should 'reschedule delayed job after change publish to true' do + @step.start_date = Date.today + @step.end_date = Date.today + 2.days + @step.published = false + @step.save! + assert_equal @step.start_date, Delayed::Job.first.run_at.to_date + process_delayed_job_queue + assert_equal @step.end_date + 1.day, Delayed::Job.first.run_at.to_date + end + +end diff --git a/plugins/community_track/test/unit/community_track_plugin/step_test.rb b/plugins/community_track/test/unit/community_track_plugin/step_test.rb index cece41b..d9145d2 100644 --- a/plugins/community_track/test/unit/community_track_plugin/step_test.rb +++ b/plugins/community_track/test/unit/community_track_plugin/step_test.rb @@ -140,26 +140,6 @@ class StepTest < ActiveSupport::TestCase assert_equal @step.end_date + 1.day, Delayed::Job.first.run_at.to_date end - should 'change publish to true on perform delayed job in a active step' do - @step.start_date = Date.today - @step.end_date = Date.today + 2.days - @step.published = false - @step.save! - CommunityTrackPlugin::ActivationJob.new(@step.id).perform - @step.reload - assert @step.published - end - - should 'reschedule delayed job after change publish to true' do - @step.start_date = Date.today - @step.end_date = Date.today + 2.days - @step.published = false - @step.save! - assert_equal @step.start_date, Delayed::Job.first.run_at.to_date - process_delayed_job_queue - assert_equal @step.end_date + 1.day, Delayed::Job.first.run_at.to_date - end - should 'do not schedule delayed job if save but do not modify date fields and published status' do @step.start_date = Date.today @step.end_date = Date.today -- libgit2 0.21.2