Browse Source

Refactoring: mkOrder makes order with sensible defaults

master
Denis Tereshkin 9 years ago
parent
commit
458cb04e09
  1. 11
      src/ATrade/Types.hs
  2. 10
      test/TestBrokerServer.hs

11
src/ATrade/Types.hs

@ -10,6 +10,7 @@ module ATrade.Types ( @@ -10,6 +10,7 @@ module ATrade.Types (
Operation(..),
OrderState(..),
Order(..),
mkOrder,
Trade(..),
OrderId(..)
) where
@ -246,6 +247,16 @@ data Order = Order { @@ -246,6 +247,16 @@ data Order = Order {
orderSignalId :: SignalId }
deriving (Show, Eq)
mkOrder = Order { orderId = 0,
orderAccountId = "",
orderSecurity = "",
orderPrice = Market,
orderQuantity = 0,
orderExecutedQuantity = 0,
orderOperation = Buy,
orderState = Unsubmitted,
orderSignalId = SignalId "" "" "" }
instance FromJSON Order where
parseJSON (Object v) = Order <$>
v .:? "order-id" .!= 0 <*>

10
test/TestBrokerServer.hs

@ -77,22 +77,18 @@ testBrokerServerSubmitOrder = testCase "Broker Server submits order" $ withConte @@ -77,22 +77,18 @@ testBrokerServerSubmitOrder = testCase "Broker Server submits order" $ withConte
uid <- toText <$> UV4.nextRandom
(mockBroker, broState) <- mkMockBroker ["demo"]
let ep = "inproc://brokerserver" `T.append` uid
let order = Order {
orderId = 0,
let order = mkOrder {
orderAccountId = "demo",
orderSecurity = "FOO",
orderPrice = Market,
orderQuantity = 10,
orderExecutedQuantity = 0,
orderOperation = Buy,
orderState = Unsubmitted,
orderSignalId = SignalId "" "" ""
orderOperation = Buy
}
bracket (startBrokerServer [mockBroker] ctx ep) stopBrokerServer (\broS ->
withSocket ctx Req (\sock -> do
connect sock (T.unpack ep)
send sock [] (BL.toStrict . encode $ RequestSubmitOrder 1 order)
threadDelay 100000
threadDelay 10000
s <- readIORef broState
(length . orders) s @?= 1
)))

Loading…
Cancel
Save