Sha256: c2f7594ee07b964557576244e91d8b00baac4332e28831a1c8a4fc433d08f68e

Contents?: true

Size: 825 Bytes

Versions: 2

Compression:

Stored size: 825 Bytes

Contents

# frozen_string_literal: true

module ClockworkMocks
  class ClockworkTask
    def initialize(interval, name, hash, block)
      @interval = interval
      @name = name
      @hash = hash || {}
      @block = block

      @due = calc_due
    end

    def reset!
      @due = Time.now
      @due = calc_due
    end

    def perform(handler = nil)
      if @block
        @block.call
      elsif handler
        handler.call(@name, Time.now)
      end
      @due = calc_due
    end

    attr_reader :due, :name

    private

    def calc_due
      ndue = Time.at((due || Time.now).to_f + @interval)

      return ndue unless @hash[:at]

      at_split = @hash[:at].split(':').map(&:to_i)
      new_due = ndue.change(hour: at_split[0], minute: at_split[1])

      new_due <= ndue ? new_due : (new_due - 1.day)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
clockwork-mocks-1.3.0 lib/clockwork_mocks/clockwork_task.rb
clockwork-mocks-1.2.0 lib/clockwork_mocks/clockwork_task.rb