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