Beispiel #1
0
        public async Task WhenSendingMoneyAndReturnIsNullOrError_ThenThrowArgumentException()
        {
            //Arrange
            var fixture  = new Fixture();
            var currency = new Currency()
            {
                Id = 1, Name = "USD", Ratio = 1
            };
            var money = new Money()
            {
                Currency = currency, Amount = 100
            };
            var fromUser = fixture.Create <User>();
            var toUser   = fixture.Create <User>();

            var request = new SendMoneyRequest()
            {
                FromUsername = fromUser.Username,
                CurrencyId   = currency.Id,
                Amount       = 10,
                ToUsername   = toUser.Username
            };

            fromUser.Balance.AddMoney(money);

            _currencyServiceMock.Setup(x => x.GetCurrencyAsync(currency.Id)).ReturnsAsync(currency);
            _userServiceMock.Setup(x => x.GetUserAsync(fromUser.Username)).ReturnsAsync(fromUser);
            _userServiceMock.Setup(x => x.GetUserAsync(toUser.Username)).ReturnsAsync(toUser);
            _userServiceMock.Setup(x => x.UpdateUserBalance(fromUser)).ReturnsAsync(fromUser);
            _userServiceMock.Setup(x => x.UpdateUserBalance(toUser)).ReturnsAsync(toUser);

            //Action
            var target = new MoneyController(_currencyServiceMock.Object, _userServiceMock.Object);
            var result = await target.Send(request);

            //Assert
            var objectResult = result.As <ObjectResult>();

            objectResult.Should().NotBeNull();
            objectResult.StatusCode.Should().Be(StatusCodes.Status200OK);
        }