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 (
Operation(..), Operation(..),
OrderState(..), OrderState(..),
Order(..), Order(..),
mkOrder,
Trade(..), Trade(..),
OrderId(..) OrderId(..)
) where ) where
@ -246,6 +247,16 @@ data Order = Order {
orderSignalId :: SignalId } orderSignalId :: SignalId }
deriving (Show, Eq) 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 instance FromJSON Order where
parseJSON (Object v) = Order <$> parseJSON (Object v) = Order <$>
v .:? "order-id" .!= 0 <*> v .:? "order-id" .!= 0 <*>

10
test/TestBrokerServer.hs

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

Loading…
Cancel
Save