Ejemplo n.º 1
0
    public void ShouldCreateUpdate_WithVisiblePlayers_FromConnection(
        [Frozen] Mock <IPlayerRepository> playerRepository,
        [Frozen] Mock <IConnectedClientStore> store,
        List <ConnectedClient> connectedClients,
        Player player,
        UpdateFactory sut)
    {
        var state = player.GetState();

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

        store.Setup(x => x.FindInGroups(It.Is <IEnumerable <string> >(
                                            en => en.Single() == $"location_{state.LocationId}")))
        .Returns(connectedClients);

        var update = (Update)sut.GetUpdateFor(state.PlayerId);

        Assert.NotEmpty(connectedClients);
        Assert.Equal(connectedClients.Count, update.VisiblePlayers.Count());
        foreach (var client in connectedClients)
        {
            Assert.Contains(client.ClientId, update.VisiblePlayers);
        }
    }
Ejemplo n.º 2
0
    public void ShouldThrow_WhenClientIdIsInvalid(UpdateFactory sut)
    {
        Assert.Throws <ArgumentNullException>(
            () => sut.GetUpdateFor(null !));

        Assert.Throws <ArgumentException>(
            () => sut.GetUpdateFor(string.Empty));
    }
Ejemplo n.º 3
0
    public void ShouldThrow_WhenPlayerDoesNotExist(
        PlayerId playerId,
        [Frozen] Mock <IPlayerRepository> playerRepository,
        UpdateFactory sut)
    {
        playerRepository.Setup(x => x.Find(playerId))
        .Returns <Player>(null);

        Assert.Throws <InvalidOperationException>(
            () => sut.GetUpdateFor(playerId));
    }
Ejemplo n.º 4
0
    public void ShouldCreateUpdate_WithCurrentLocation(
        [Frozen] Mock <IPlayerRepository> playerRepository,
        Player player,
        UpdateFactory sut)
    {
        var state = player.GetState();

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

        var update = (Update)sut.GetUpdateFor(state.PlayerId);

        Assert.Equal(state.LocationId, update.LocationId);
    }