Beispiel #1
0
        public async Task Sell_ValidStockUnits_SavedInRepo()
        {
            //arrange
            var tradeTxService = new TradeTxService(_loggerMock.Object, _tradeRepositoryMock.Object, _messageHandlerMock.Object);
            var userId         = Guid.NewGuid();
            var stockId        = Guid.NewGuid();
            var noOfUnits      = 10;
            var userStockId    = Guid.NewGuid();

            _tradeRepositoryMock.Setup(x => x.SellStock(userId, stockId, noOfUnits)).ReturnsAsync(userStockId);
            _messageHandlerMock.Setup(x => x.Send(It.IsAny <IMessage>(), It.IsAny <string>()));

            //act
            var result = await tradeTxService.Sell(userId, stockId, noOfUnits);

            //assert
            Assert.True(result);
            _tradeRepositoryMock.Verify(x => x.SellStock(userId, stockId, noOfUnits), Times.Once);
            _messageHandlerMock.Verify(x => x.Send(It.Is <Order>(y => y.StockId == stockId), "Order - " + stockId), Times.Once);
        }
Beispiel #2
0
        public async Task UpdateStockPrice_ValidNewStockPrice_StockPriceUpdated()
        {
            //arrange
            var tradeTxService = new TradeTxService(_loggerMock.Object, _tradeRepositoryMock.Object, _messageHandlerMock.Object);
            var userId         = Guid.NewGuid();
            var stockId        = Guid.NewGuid();
            var newStockPrice  = 10.20;
            var userStockId    = Guid.NewGuid();

            _tradeRepositoryMock.Setup(x => x.UpdateStockPrice(stockId, newStockPrice)).ReturnsAsync(userStockId);
            _messageHandlerMock.Setup(x => x.Send(It.IsAny <IMessage>(), It.IsAny <string>()));

            //act
            var result = await tradeTxService.UpdateStockPrice(stockId, newStockPrice);

            //assert
            Assert.True(result);
            _tradeRepositoryMock.Verify(x => x.UpdateStockPrice(stockId, newStockPrice), Times.Once);
            _messageHandlerMock.Verify(x => x.Send(It.Is <StockUpdate>(y => y.Id == stockId), "Stock - " + stockId), Times.Once);
        }
Beispiel #3
0
        public async Task Buy_InvalidStockId_ErrorLogged()
        {
            //arrange
            var tradeTxService = new TradeTxService(_loggerMock.Object, _tradeRepositoryMock.Object, _messageHandlerMock.Object);
            var userId         = Guid.NewGuid();
            var stockId        = Guid.NewGuid();
            var noOfUnits      = 10;
            var userStockId    = Guid.NewGuid();

            _tradeRepositoryMock.Setup(x => x.BuyStock(userId, stockId, noOfUnits))
            .ThrowsAsync(new ArgumentException("Invalid stock id."));
            _loggerMock.Setup(x => x.Log(LogSeverity.Error, It.IsAny <string>()));
            _messageHandlerMock.Setup(x => x.Send(It.IsAny <IMessage>(), It.IsAny <string>()));

            //act
            var result = await tradeTxService.Buy(userId, stockId, noOfUnits);

            //assert
            Assert.False(result);
            _loggerMock.Verify(x => x.Log(LogSeverity.Error, It.Is <string>(y => y == "Invalid stock id.")), Times.Once);
            _messageHandlerMock.Verify(x => x.Send(It.IsAny <Order>(), "Order - " + stockId), Times.Never);
        }
Beispiel #4
0
        public async Task Buy_ValidStockUnits_OrderPlaced()
        {
            //arrange
            var tradeTxService = new TradeTxService(_loggerMock.Object, _tradeRepositoryMock.Object, _messageHandlerMock.Object);
            var userId         = Guid.NewGuid();
            var stockId        = Guid.NewGuid();
            var noOfUnits      = 10;
            var userStockId    = Guid.NewGuid();

            _tradeRepositoryMock.Setup(x => x.BuyStock(userId, stockId, noOfUnits)).ReturnsAsync(userStockId);
            _messageHandlerMock.Setup(x => x.Send(It.IsAny <IMessage>(), It.IsAny <string>()));

            //act
            var result = await tradeTxService.Buy(userId, stockId, noOfUnits);

            //assert
            Assert.True(result);
            _tradeRepositoryMock.Verify(x => x.BuyStock(userId, stockId, noOfUnits), Times.Once);
            _messageHandlerMock.Verify(x => x.Send(It.Is <Order>(y => y.StockId == stockId &&
                                                                 y.OrderStatus == CentralTrade.Models.Enums.OrderStatus.Placed &&
                                                                 y.TransactionType == CentralTrade.Models.Enums.TransactionType.Buy), "Order - " + stockId), Times.Once);
        }