mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-19 13:19:39 +02:00
41 lines
1.6 KiB
Ruby
41 lines
1.6 KiB
Ruby
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
|