[deploy] Bug Fix: Dont Freeze Timeframer Timestamps bc They Will be Inaccurate (#8708)

This commit is contained in:
Molly Struve 2020-06-16 10:42:31 -05:00 committed by GitHub
parent 9187c0b6bf
commit 8ce292870e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 45 additions and 10 deletions

View file

@ -2,21 +2,25 @@ class Timeframer
attr_accessor :timeframe
LATEST_TIMEFRAME = "latest".freeze
FILTER_TIMEFRAMES = {
"infinity" => 5.years.ago,
"year" => 1.year.ago,
"month" => 1.month.ago,
"week" => 1.week.ago
}.freeze
DATETIMES = FILTER_TIMEFRAMES.merge(LATEST_TIMEFRAME: LATEST_TIMEFRAME).freeze
FILTER_TIMEFRAMES = %w[infinity year month week].freeze
def initialize(timeframe)
@timeframe = timeframe
end
def datetime
DATETIMES[timeframe]
datetimes[timeframe]
end
private
def datetimes
@datetimes ||= {
infinity: 5.years.ago,
year: 1.year.ago,
month: 1.month.ago,
week: 1.week.ago,
LATEST_TIMEFRAME: LATEST_TIMEFRAME
}.with_indifferent_access
end
end

View file

@ -0,0 +1,31 @@
require "rails_helper"
RSpec.describe Timeframer, type: :labor do
it "sets timeframe for week to 1 week ago" do
Timecop.freeze(Time.current) do
timeframer = described_class.new("week")
expect(timeframer.datetime).to eq(1.week.ago)
end
end
it "sets timeframe for month to 1 month ago" do
Timecop.freeze(Time.current) do
timeframer = described_class.new("month")
expect(timeframer.datetime).to eq(1.month.ago)
end
end
it "sets timeframe for year to 1 year ago" do
Timecop.freeze(Time.current) do
timeframer = described_class.new("year")
expect(timeframer.datetime).to eq(1.year.ago)
end
end
it "sets timeframe for infinity to 5 years ago" do
Timecop.freeze(Time.current) do
timeframer = described_class.new("infinity")
expect(timeframer.datetime).to eq(5.years.ago)
end
end
end