public IResponse MarketSell(User user, Stock stock, int quantity) { var holdings = _holdingsProvider.GetHolding(user, stock); if (holdings < quantity) { return new SellOrderFailedResponse { Reason = SellOrderFailedResponse.FailureReason.InsufficientHoldings } } ; var fills = GetOrderFills(OrderType.Market, OrderDirection.Sell, stock, quantity); if (fills.Any()) { ExecuteSell(user, fills); } var unfilled = quantity - fills.Sum(x => x.Quantity); if (unfilled > 0) { _ordersProvider.AddSellOrder(user, stock, unfilled); } return(new BuyOrderResponse { Filled = fills, Unfilled = unfilled }); }
public void GetSellOrdersTest_OrderCount() { _provider.AddSellOrder(_user, _stock, 1); _provider.AddSellOrder(_user, _stock, 1); var actual = _provider.GetSellOrders(_stock); Assert.AreEqual(2, actual.Count()); }