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