public void Good_request_should_not_throw(HubGroupNotify.Request request) { var subject = new HubGroupNotify.Validator(); Func <Task> action = async() => await subject.Process(request, default); action.Should().NotThrow <ValidationException>(); }
public async Task Handle(RoomNotification notification, CancellationToken cancellationToken) { var game = await this.context.Games.GetGameOrThrowAsync(notification.GameId, cancellationToken); var connectionIdTasks = Task.WhenAll( new[] { game.HostId.ToString(), game.ChallengerId.ToString() } .Select(x => this.connectionIdStore.GetConnectionIds(x))); var groupRequest = new HubGroupNotify.Request { Group = notification.GameId.ToString(), Message = await this.messageFactory.Create( new Messages.GameState.MessageData { GameId = notification.GameId }), Excluded = (await connectionIdTasks).SelectMany(x => x) }; await this.mediator.Send(groupRequest); }
public async Task Should_choose_correct_group(string group) { var request = new HubGroupNotify.Request() { Group = group, Message = "Hello World" }; var gameClient = new Mock <IGameClient>(); gameClient .Setup(x => x.Send(It.IsAny <string>())) .Returns(Task.CompletedTask); var hubClients = new Mock <IHubClients <IGameClient> >(); hubClients .Setup(x => x.GroupExcept(It.IsAny <string>(), It.IsAny <IReadOnlyList <string> >())) .Returns(gameClient.Object); var hubContext = new Mock <IHubContext <GameHub, IGameClient> >(); hubContext .Setup(x => x.Clients) .Returns(hubClients.Object); var subject = new HubGroupNotify.RequestHandler( hubContext.Object); await subject.Handle(request, default); hubClients.Verify(x => x.GroupExcept( group, It.Is <IReadOnlyList <string> >(y => y.Count == 0))); }
public async Task Should_send_message(string message) { var request = new HubGroupNotify.Request() { Group = "1", Message = message }; var gameClient = new Mock <IGameClient>(); gameClient .Setup(x => x.Send(It.IsAny <string>())) .Returns(Task.CompletedTask); var hubClients = new Mock <IHubClients <IGameClient> >(); hubClients .Setup(x => x.GroupExcept(It.IsAny <string>(), It.IsAny <IReadOnlyList <string> >())) .Returns(gameClient.Object); var hubContext = new Mock <IHubContext <GameHub, IGameClient> >(); hubContext .Setup(x => x.Clients) .Returns(hubClients.Object); var subject = new HubGroupNotify.RequestHandler( hubContext.Object); await subject.Handle(request, default); gameClient.Verify(x => x.Send(message)); }
public async Task Handle(LobbyNotification notification, CancellationToken cancellationToken) { var lobbyRequest = new HubGroupNotify.Request { Group = GameHub.Lobby, Message = await this.messageFactory.Create(new Messages.GameList.MessageData()) }; await this.mediator.Send(lobbyRequest); }
public async Task Should_choose_correct_group_and_exclude(string group) { var excludedIds = new[] { "a6eff1fb-8b8c-4f2d-b6f3-85f57a33cd60", "20255bec-d48d-4309-972f-4b74c8f06fc8" }; var request = new HubGroupNotify.Request() { Group = group, Message = "Hello World", Excluded = excludedIds }; var gameClient = new Mock <IGameClient>(); gameClient .Setup(x => x.Send(It.IsAny <string>())) .Returns(Task.CompletedTask); var hubClients = new Mock <IHubClients <IGameClient> >(); hubClients .Setup(x => x.GroupExcept(It.IsAny <string>(), It.IsAny <IReadOnlyList <string> >())) .Returns(gameClient.Object); var hubContext = new Mock <IHubContext <GameHub, IGameClient> >(); hubContext .Setup(x => x.Clients) .Returns(hubClients.Object); var subject = new HubGroupNotify.RequestHandler( hubContext.Object); await subject.Handle(request, default); hubClients.Verify(x => x.GroupExcept( group, It.Is <IReadOnlyList <string> >(y => new HashSet <string>(y).SetEquals(excludedIds)))); }