public async Task Handler_Should_Work_Properly() { // Arrange var command = new UserBetForAwayTeam { UserId = Guid.NewGuid(), MatchId = Guid.NewGuid(), AwayBet = decimal.MaxValue, }; var userMatchBet = new UserMatchBet { Id = Guid.NewGuid(), UserId = command.UserId, MatchId = command.MatchId, AwayBet = command.AwayBet, HomeBet = decimal.Zero, }; _betsRepositoryMock .Setup(repository => repository .AddAwayBetAsync(command.UserId, command.MatchId, command.AwayBet)) .ReturnsAsync(() => userMatchBet); // Act var result = await _betForAwayTeamHandler.Handle(command); // Assert result.HasValue.ShouldBe(true); }
public async Task UserCanBetForAwayTeam( Fixture fixture, Team homeTeam, Team awayTeam, Register registerCommand) { // Arrange await _authTestsHelper .RegisterAndLogin(registerCommand); var match = await _matchTestHelper .RegistrateMatchAsync(fixture, homeTeam, awayTeam); var betCommand = new UserBetForAwayTeam { UserId = registerCommand.Id, MatchId = match.Id, AwayBet = fixture.Create <decimal>(), }; // Act var result = await _fixture.SendAsync(betCommand); // Assert var isBetExists = await _fixture.ExecuteDbContextAsync( async context => context.UserMatchBets .Any(bet => bet.UserId == registerCommand.Id && bet.MatchId == match.Id && bet.AwayBet == betCommand.AwayBet && bet.HomeBet == 0)); isBetExists.ShouldBeTrue(); }
public async Task Handler_Should_Return_Critical_Error_If_Repository_Crashes() { // Arrange var command = new UserBetForAwayTeam { UserId = Guid.NewGuid(), MatchId = Guid.NewGuid(), AwayBet = decimal.MaxValue, }; _betsRepositoryMock .Setup(repository => repository .AddAwayBetAsync(command.UserId, command.MatchId, command.AwayBet)) .ReturnsAsync(() => null); // Act var result = await _betForAwayTeamHandler.Handle(command); // Assert result.ShouldHaveErrorOfType(ErrorType.Critical); }