Пример #1
0
        public async Task ShouldSendMessageWithIncrementedScoreWhenGameEventWasSent()
        {
            // Arrange
            string userId = Guid.NewGuid().ToString();

            string[] friendUserIds           = new[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() };
            string[] friendUserIdsAsString   = friendUserIds.Select(f => f.ToString()).ToArray();
            var      notificationServiceMock = new Mock <INotificationService>();
            var      manager = new GameRepository();
            var      game    = manager.Create("my game", friendUserIds);

            var command = new AddGameEventCommand(game.Id, userId, 5);
            var handler = new AddGameEventCommandHandler(notificationServiceMock.Object, manager);

            // Act
            await handler.Handle(command, CancellationToken.None);

            // Assert
            notificationServiceMock.Verify(s =>
                                           s.SendSignalRMessageAsync(
                                               It.Is <IReadOnlyList <string> >(u => AreEqual(u, friendUserIdsAsString)),
                                               Shared.Constants.SignalR.NotificationHubName,
                                               HubMethodNames.GameUpdateReceived,
                                               It.Is <GameUpdateReceivedMessage>(m => m.GameId == game.Id && m.UserId == userId && m.CurrentScore == 5)), Times.Once);

            var secondCommand = new AddGameEventCommand(game.Id, userId, 3);
            await handler.Handle(secondCommand, CancellationToken.None);

            notificationServiceMock.Verify(s =>
                                           s.SendSignalRMessageAsync(
                                               It.Is <IReadOnlyList <string> >(u => AreEqual(u, friendUserIdsAsString)),
                                               Shared.Constants.SignalR.NotificationHubName,
                                               HubMethodNames.GameUpdateReceived,
                                               It.Is <GameUpdateReceivedMessage>(m => m.GameId == game.Id && m.UserId == userId && m.CurrentScore == 8)), Times.Once);
        }
Пример #2
0
        public async Task AddGameEvent(Guid gameId, AddGameEventDTO gameEvent)
        {
            var userId  = this.identityService.GetCurrentUserId();
            var command = new AddGameEventCommand(gameId, userId, gameEvent.Count);

            await this.mediator.Send(command);
        }