1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-19 05:09:38 +02:00
Maybe/test/models/period_test.rb

61 lines
2.1 KiB
Ruby
Raw Permalink Normal View History

require "test_helper"
class PeriodTest < ActiveSupport::TestCase
test "raises validation error when start_date or end_date is missing" do
error = assert_raises(ActiveModel::ValidationError) do
Period.new(start_date: nil, end_date: nil)
end
assert_includes error.message, "Start date can't be blank"
assert_includes error.message, "End date can't be blank"
end
test "raises validation error when start_date is not before end_date" do
error = assert_raises(ActiveModel::ValidationError) do
Period.new(start_date: Date.current, end_date: Date.current - 1.day)
end
assert_includes error.message, "Start date must be before end date"
end
2025-03-03 12:47:20 -05:00
test "can create custom period" do
period = Period.new(start_date: Date.current - 15.days, end_date: Date.current)
assert_equal "Custom Period", period.label
end
2025-03-03 12:47:20 -05:00
test "from_key returns period for valid key" do
period = Period.from_key("last_30_days")
assert_equal 30.days.ago.to_date, period.start_date
assert_equal Date.current, period.end_date
end
test "from_key with invalid key and no fallback raises error" do
2025-03-03 12:47:20 -05:00
error = assert_raises(Period::InvalidKeyError) do
Period.from_key("invalid_key")
end
end
test "label returns correct label for known period" do
period = Period.from_key("last_30_days")
assert_equal "Last 30 Days", period.label
end
test "label returns Custom Period for unknown period" do
period = Period.new(start_date: Date.current - 15.days, end_date: Date.current)
assert_equal "Custom Period", period.label
end
test "comparison_label returns correct label for known period" do
period = Period.from_key("last_30_days")
assert_equal "vs. last month", period.comparison_label
end
test "comparison_label returns date range for unknown period" do
start_date = Date.current - 15.days
end_date = Date.current
period = Period.new(start_date: start_date, end_date: end_date)
expected = "#{start_date.strftime("%b %d, %Y")} to #{end_date.strftime("%b %d, %Y")}"
assert_equal expected, period.comparison_label
end
end