require 'spec_helper'

shared_examples_for WorkingHelpers do
  describe "recent_error_logs?" do
    it "returns true if last_error_log_at is near last_event_at" do
      agent = described_class.new

      agent.last_error_log_at = 10.minutes.ago
      agent.last_event_at = 10.minutes.ago
      agent.recent_error_logs?.should be_truthy

      agent.last_error_log_at = 11.minutes.ago
      agent.last_event_at = 10.minutes.ago
      agent.recent_error_logs?.should be_truthy

      agent.last_error_log_at = 5.minutes.ago
      agent.last_event_at = 10.minutes.ago
      agent.recent_error_logs?.should be_truthy

      agent.last_error_log_at = 15.minutes.ago
      agent.last_event_at = 10.minutes.ago
      agent.recent_error_logs?.should be_falsey

      agent.last_error_log_at = 2.days.ago
      agent.last_event_at = 10.minutes.ago
      agent.recent_error_logs?.should be_falsey
    end
  end

  describe "received_event_without_error?" do
    before do
      @agent = described_class.new
    end

    it "should return false until the first event was received" do
      @agent.received_event_without_error?.should == false
      @agent.last_receive_at = Time.now
      @agent.received_event_without_error?.should == true
    end

    it "should return false when the last error occured after the last received event" do
      @agent.last_receive_at = Time.now - 1.minute
      @agent.last_error_log_at = Time.now
      @agent.received_event_without_error?.should == false
    end

    it "should return true when the last received event occured after the last error" do
      @agent.last_receive_at = Time.now
      @agent.last_error_log_at = Time.now - 1.minute
      @agent.received_event_without_error?.should == true
    end
  end
end