From 8ce292870eef428ab4075755477a223d2c9d0d69 Mon Sep 17 00:00:00 2001 From: Molly Struve Date: Tue, 16 Jun 2020 10:42:31 -0500 Subject: [PATCH] [deploy] Bug Fix: Dont Freeze Timeframer Timestamps bc They Will be Inaccurate (#8708) --- app/labor/timeframer.rb | 24 ++++++++++++++---------- spec/labor/timeframer_spec.rb | 31 +++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 spec/labor/timeframer_spec.rb diff --git a/app/labor/timeframer.rb b/app/labor/timeframer.rb index 4b7130768..9a9b40f82 100644 --- a/app/labor/timeframer.rb +++ b/app/labor/timeframer.rb @@ -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 diff --git a/spec/labor/timeframer_spec.rb b/spec/labor/timeframer_spec.rb new file mode 100644 index 000000000..0ebfd5ce3 --- /dev/null +++ b/spec/labor/timeframer_spec.rb @@ -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