require 'rails_helper'

describe TimeTracker do
  describe "#track" do
    it "tracks execution time" do
      tracked_result = TimeTracker.track { sleep(0.01) }
      expect(tracked_result.elapsed_time).to satisfy {|v| v > 0.01 && v < 0.1}
    end

    it "returns the proc return value" do
      tracked_result = TimeTracker.track { 42 }
      expect(tracked_result.result).to eq(42)
    end

    it "returns an object that behaves like the proc result" do
      tracked_result = TimeTracker.track { 42 }
      expect(tracked_result.to_i).to eq(42)
      expect(tracked_result + 1).to eq(43)
    end
  end
end