Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 3
0
        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);
        }