class Shoulda::Whenever::ScheduleMatcher
Attributes
duration[R]
roles[R]
task[R]
time[R]
Public Class Methods
new(task)
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 14 def initialize(task) @task = task @duration = nil @time = nil @roles = nil end
Public Instance Methods
at(time)
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 70 def at(time) @time = time self end
description()
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 83 def description [ base_description, duration_description, time_description, roles_description ].compact.join(' ') end
every(duration)
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 64 def every(duration) @duration = duration self end
failure_message()
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 92 def failure_message [ base_failure_message, duration_description, time_description, roles_description ].compact.join(' ') end
failure_message_when_negated()
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 101 def failure_message_when_negated [ base_failure_message_when_negated, duration_description, time_description, roles_description ].compact.join(' ') end
filter_jobs_by_duration(jobs)
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 32 def filter_jobs_by_duration(jobs) if duration.nil? jobs.values.flatten else duration_to_fetch = if duration.is_a?(String) || duration.is_a?(Symbol) duration else duration.to_i end jobs.fetch(duration_to_fetch) { [] } end end
filter_jobs_by_roles(jobs)
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 52 def filter_jobs_by_roles(jobs) return jobs if roles.nil? || roles.empty? jobs.select { |job| job.roles == roles } end
filter_jobs_by_task(jobs)
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 58 def filter_jobs_by_task(jobs) jobs.select do |job| job.instance_variable_get("@options")[:task] == task end end
filter_jobs_by_time(jobs)
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 46 def filter_jobs_by_time(jobs) return jobs if time.nil? jobs.select { |job| job.at == time } end
matches?(subject)
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 21 def matches?(subject) jobs = subject.instance_variable_get("@jobs") jobs = filter_jobs_by_duration(jobs) jobs = filter_jobs_by_time(jobs) jobs = filter_jobs_by_roles(jobs) jobs = filter_jobs_by_task(jobs) jobs.any? end
with_roles(roles)
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 76 def with_roles(roles) @roles = Array(roles) self end
Also aliased as: with_role
Private Instance Methods
base_description()
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 112 def base_description "schedule \"#{ task }\"" end
base_failure_message()
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 140 def base_failure_message "expected to schedule \"#{ task }\"" end
base_failure_message_when_negated()
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 144 def base_failure_message_when_negated "expected not to schedule \"#{ task }\"" end
duration_description()
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 116 def duration_description unless duration.nil? if duration.is_a?(String) || duration.is_a?(Symbol) "every \"#{ duration }\"" else "every #{ duration.to_i } seconds" end end end
roles_description()
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 132 def roles_description unless roles.nil? || roles.empty? role_names = roles.map { |role| "\"#{ role }\"" }.join(", ") "with #{ role_names } role(s)" end end
time_description()
click to toggle source
# File lib/shoulda/whenever/schedule_matcher.rb, line 126 def time_description unless time.nil? "at \"#{ time }\"" end end