Beispiel #1
0
        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>();
        }
Beispiel #2
0
        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));
        }
Beispiel #5
0
        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))));
        }