mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-24 23:59:40 +02:00
* Reindent TimeSeries classes * Fix spacing in time series tests * Remove trend tests where current is nil I think if we've gotten this far with a nil value for current, there's a data integrity problem. If we allow this, we'll have to be very defensive in our code. Best to raise and fix early. * Reindent Money class * Refactor TimeSeries artifacts * Use as_json in TimeSeries * Bring back tests for trends where current is nil * Bring back trend test * Correctly enumerate trend test * Use favorable_direction for trend_styles helper * Make trend public in TimeSeries::Value * Allow nil current values in trends I think I might've gotten it wrong before, nils might appear in trends if values are unavailable for snapshots * Clean up TimeSeries::Trend * Skip trend values same class validations if any values are nil * Refactor Money * Remove object parsing in TimeSeries::Value We're only every passing hashes
46 lines
1.4 KiB
Ruby
46 lines
1.4 KiB
Ruby
require "test_helper"
|
|
|
|
class TimeSeries::TrendTest < ActiveSupport::TestCase
|
|
test "handles money trend" do
|
|
trend = TimeSeries::Trend.new(current: Money.new(100), previous: Money.new(50))
|
|
assert_equal "up", trend.direction
|
|
assert_equal Money.new(50), trend.value
|
|
assert_equal 100.0, trend.percent
|
|
end
|
|
|
|
test "up" do
|
|
trend = TimeSeries::Trend.new(current: 100, previous: 50)
|
|
assert_equal "up", trend.direction
|
|
end
|
|
|
|
test "down" do
|
|
trend = TimeSeries::Trend.new(current: 50, previous: 100)
|
|
assert_equal "down", trend.direction
|
|
end
|
|
|
|
test "flat" do
|
|
trend1 = TimeSeries::Trend.new(current: 100, previous: 100)
|
|
trend2 = TimeSeries::Trend.new(current: 100, previous: nil)
|
|
trend3 = TimeSeries::Trend.new(current: nil, previous: nil)
|
|
assert_equal "flat", trend1.direction
|
|
assert_equal "flat", trend2.direction
|
|
assert_equal "flat", trend3.direction
|
|
end
|
|
|
|
test "infinitely up" do
|
|
trend = TimeSeries::Trend.new(current: 100, previous: 0)
|
|
assert_equal "up", trend.direction
|
|
end
|
|
|
|
test "infinitely down" do
|
|
trend1 = TimeSeries::Trend.new(current: nil, previous: 100)
|
|
trend2 = TimeSeries::Trend.new(current: 0, previous: 100)
|
|
assert_equal "down", trend1.direction
|
|
assert_equal "down", trend2.direction
|
|
end
|
|
|
|
test "empty" do
|
|
trend = TimeSeries::Trend.new(current: nil, previous: nil)
|
|
assert_equal "flat", trend.direction
|
|
end
|
|
end
|