Example #1
0
        public async Task ShouldThrow_WhenFirstMessageIsNotJoin(
            IConnection connection,
            ConnectionInitializer sut)
        {
            Mock.Get(connection).Setup(x => x.ReceiveAsync(Cts.Token))
            .ReturnsAsync(Create <TestMessage>());

            await Assert.ThrowsAsync <InvalidOperationException>(
                async() => await sut.ConnectAsync(connection, Cts.Token));
        }
Example #2
0
        public async Task ShouldUsePlayerIdAsClientId(
            IConnection connection,
            PlayerId playerId,
            ConnectionInitializer sut)
        {
            var joinMessage = Fixture.Build <Join>()
                              .With(x => x.PlayerId, playerId)
                              .Create();

            Mock.Get(connection).Setup(x => x.ReceiveAsync(Cts.Token))
            .ReturnsAsync(joinMessage);

            var client = await sut.ConnectAsync(connection, Cts.Token);

            Assert.Equal(playerId, client.ClientId);
        }
Example #3
0
        public async Task ShouldSetConnectionAndUpdateDetector(
            IConnection connection,
            PlayerId playerId,
            [Frozen] IUpdateDetector updateDetector,
            ConnectionInitializer sut)
        {
            var joinMessage = Fixture.Build <Join>()
                              .With(x => x.PlayerId, playerId)
                              .Create();

            Mock.Get(connection).Setup(x => x.ReceiveAsync(Cts.Token))
            .ReturnsAsync(joinMessage);

            var client = await sut.ConnectAsync(connection, Cts.Token);

            Assert.Equal(connection, client.Connection);
            Assert.Equal(updateDetector, GetPrivateField(client, "_updateDetector"));
        }
Example #4
0
        public async Task ShouldThrow_WhenPlayerDoesNotExist(
            IConnection connection,
            PlayerId playerId,
            [Frozen] Mock <IPlayerRepository> playerRepository,
            ConnectionInitializer sut)
        {
            var joinMessage = Fixture.Build <Join>()
                              .With(x => x.PlayerId, playerId)
                              .Create();

            Mock.Get(connection).Setup(x => x.ReceiveAsync(Cts.Token))
            .ReturnsAsync(joinMessage);

            playerRepository.Setup(x => x.Find(playerId))
            .Returns <Player>(null);

            await Assert.ThrowsAsync <InvalidOperationException>(
                async() => await sut.ConnectAsync(connection, Cts.Token));
        }
Example #5
0
        public async Task ShouldUsePlayerUniquePositionAsGroup(
            IConnection connection,
            Player player,
            [Frozen] Mock <IPlayerRepository> playerRepository,
            ConnectionInitializer sut)
        {
            var state = player.GetState();

            var joinMessage = Fixture.Build <Join>()
                              .With(x => x.PlayerId, state.PlayerId)
                              .Create();

            Mock.Get(connection).Setup(x => x.ReceiveAsync(Cts.Token))
            .ReturnsAsync(joinMessage);

            playerRepository.Setup(x => x.Find(state.PlayerId))
            .Returns(player);

            var client = await sut.ConnectAsync(connection, Cts.Token);

            Assert.Equal($"location_{state.LocationId}", client.Group);
        }