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/security_test.rb

42 lines
1.6 KiB
Ruby
Raw Permalink Normal View History

require "test_helper"
class SecurityTest < ActiveSupport::TestCase
# Below has 3 example scenarios:
# 1. Original ticker
# 2. Duplicate ticker on a different exchange (different market price)
# 3. "Offline" version of the same ticker (for users not connected to a provider)
test "can have duplicate tickers if exchange is different" do
original = Security.create!(ticker: "TEST", exchange_operating_mic: "XNAS")
duplicate = Security.create!(ticker: "TEST", exchange_operating_mic: "CBOE")
offline = Security.create!(ticker: "TEST", exchange_operating_mic: nil)
assert original.valid?
assert duplicate.valid?
assert offline.valid?
end
test "cannot have duplicate tickers if exchange is the same" do
original = Security.create!(ticker: "TEST", exchange_operating_mic: "XNAS")
duplicate = Security.new(ticker: "TEST", exchange_operating_mic: "XNAS")
assert_not duplicate.valid?
assert_equal [ "has already been taken" ], duplicate.errors[:ticker]
end
test "cannot have duplicate tickers if exchange is nil" do
original = Security.create!(ticker: "TEST", exchange_operating_mic: nil)
duplicate = Security.new(ticker: "TEST", exchange_operating_mic: nil)
assert_not duplicate.valid?
assert_equal [ "has already been taken" ], duplicate.errors[:ticker]
end
test "casing is ignored when checking for duplicates" do
original = Security.create!(ticker: "TEST", exchange_operating_mic: "XNAS")
duplicate = Security.new(ticker: "tEst", exchange_operating_mic: "xNaS")
assert_not duplicate.valid?
assert_equal [ "has already been taken" ], duplicate.errors[:ticker]
end
end