Exemplo n.º 1
0
        public async Task HandleAsync_WhenUserGameCredentialAddedIntegrationEventIsValid_ShouldBeCompletedTask()
        {
            // Arrange
            TestMock.UserService.Setup(userService => userService.SendEmailAsync(It.IsAny <UserId>(), It.IsAny <string>(), It.IsAny <object>()))
            .Returns(Task.CompletedTask)
            .Verifiable();

            var handler = new UserGameCredentialAddedIntegrationEventHandler(TestMock.UserService.Object, TestMock.SendgridOptions.Object);

            var integrationEvent = new UserGameCredentialAddedIntegrationEvent
            {
                Credential = new GameCredentialDto
                {
                    Game     = EnumGame.LeagueOfLegends,
                    PlayerId = new PlayerId(),
                    UserId   = new UserId()
                }
            };

            // Act
            await handler.HandleAsync(integrationEvent);

            // Assert
            TestMock.UserService.Verify(userService => userService.SendEmailAsync(It.IsAny <UserId>(), It.IsAny <string>(), It.IsAny <object>()), Times.Once);
        }
        public async Task HandleAsync_WhenUserGameCredentialAddedIntegrationEventIsValid_ShouldBeCompletedTask()
        {
            // Arrange
            var userId     = new UserId();
            var user       = new User();
            var mockLogger = new MockLogger <UserGameCredentialAddedIntegrationEventHandler>();

            TestMock.UserService.Setup(userService => userService.FindByIdAsync(It.IsAny <string>())).ReturnsAsync(user).Verifiable();

            TestMock.UserService.Setup(userService => userService.AddClaimAsync(It.IsAny <User>(), It.IsAny <Claim>()))
            .ReturnsAsync(new IdentityResult())
            .Verifiable();

            var handler = new UserGameCredentialAddedIntegrationEventHandler(TestMock.UserService.Object, mockLogger.Object);

            var integrationEvent = new UserGameCredentialAddedIntegrationEvent

            {
                Credential = new GameCredentialDto
                {
                    Game     = EnumGame.LeagueOfLegends,
                    PlayerId = new PlayerId(),
                    UserId   = userId
                }
            };

            // Act
            await handler.HandleAsync(integrationEvent);

            // Assert
            TestMock.UserService.Verify(userService => userService.FindByIdAsync(It.IsAny <string>()), Times.Once);
            TestMock.UserService.Verify(userService => userService.AddClaimAsync(It.IsAny <User>(), It.IsAny <Claim>()), Times.Once);
            mockLogger.Verify(Times.Once());
        }
        public static async Task PublishUserGameCredentialAddedIntegrationEventAsync(this IServiceBusPublisher publisher, Credential credential)
        {
            var integrationEvent = new UserGameCredentialAddedIntegrationEvent
            {
                Credential = new GameCredentialDto
                {
                    UserId   = credential.UserId,
                    PlayerId = credential.PlayerId,
                    Game     = credential.Game.ToEnum <EnumGame>()
                }
            };

            await publisher.PublishAsync(integrationEvent);
        }