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); }
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); }