public async Task Handle(CreateGame message)
        {
            var foosballGame = new FoosballGame(message.GameId, message.TeamA, message.TeamB, message.SetsToWin);
            await _session.Add(foosballGame);

            await _session.Commit();
        }
    public void CreateNewGame_NewGameHasOnlyFirstSetRunning()
    {
        var game = FoosballGame.Initialize(new CreateFoosballGame(Guid.NewGuid(), DateTime.Now));
        var set  = Assert.IsType <FirstSetRunning>(game.Sets);

        Assert.Equal(0, set.Set.BlueTeamScore);
        Assert.Equal(0, set.Set.RedTeamScore);
    }
    public void TieAfterTwoSets_ThirdSetIsCreated()
    {
        var game    = FoosballGame.Initialize(new CreateFoosballGame(Guid.NewGuid(), DateTime.Now));
        var newGame = Enumerable
                      .Range(0, 20).Aggregate(game, (c, n) => c.AddPointForTeam(n < 10 ? Team.Blue : Team.Red));

        Assert.IsType <ThirdSetRunning>(newGame.Sets);
    }
    public void OneTeamWinsTwoSetsInRow_GameIsFinished(Team team)
    {
        var game    = FoosballGame.Initialize(new CreateFoosballGame(Guid.NewGuid(), DateTime.Now));
        var newGame = Enumerable.Range(0, 20).Aggregate(game, (c, _) => c.AddPointForTeam(team));
        var sets    = Assert.IsType <FinishedSets>(newGame.Sets);

        Assert.Equal(team, sets.WinnerTeam);
    }
    public void Add10PointsForTeam_SetIsFinished(Team team)
    {
        var game    = FoosballGame.Initialize(new CreateFoosballGame(Guid.NewGuid(), DateTime.Now));
        var newGame = Enumerable.Range(0, 10).Aggregate(game, (c, _) => c.AddPointForTeam(team));

        var(firstSet, _) = Assert.IsType <SecondSetRunning>(newGame.Sets);
        Assert.Equal(team == Team.Blue ? 10 : 0, firstSet.BlueTeamScore);
        Assert.Equal(team == Team.Blue  ? 0 : 10, firstSet.RedTeamScore);
    }
    public void AddPointForTeam_ScoreIsIncremented(Team team)
    {
        var game    = FoosballGame.Initialize(new CreateFoosballGame(Guid.NewGuid(), DateTime.Now));
        var newGame = game.AddPointForTeam(team);
        var set     = Assert.IsType <FirstSetRunning>(newGame.Sets);

        Assert.Equal(team == Team.Blue ? 1 : 0, set.Set.BlueTeamScore);
        Assert.Equal(team == Team.Blue ? 0 : 1, set.Set.RedTeamScore);
    }
Exemple #7
0
 public static Contracts.FoosballGame ToContract(this FoosballGame game)
 {
     return(new(
                Id : game.Id,
                Start : game.Start.ToDateTimeUnspecified(),
                End : game.End?.ToDateTimeUnspecified(),
                Sets : game.Sets.ToContract().ToArray(),
                Finished : game.Sets is FinishedSets,
                WinnerTeam : game.Sets is FinishedSets finishedSets ? finishedSets.WinnerTeam : null
                ));
 }
    public void OneTeamsWinsNotInRow_ThirdSetIsFinishedAndResultIsCounted(Team team)
    {
        var game    = FoosballGame.Initialize(new CreateFoosballGame(Guid.NewGuid(), DateTime.Now));
        var newGame = Enumerable
                      .Range(0, 20).Aggregate(game, (c, n) => c.AddPointForTeam(n < 10 ? Team.Blue : Team.Red));

        newGame = Enumerable.Range(0, 10).Aggregate(newGame, (c, _) => c.AddPointForTeam(team));
        var sets = Assert.IsType <FinishedSets>(newGame.Sets);

        Assert.Equal(team, sets.WinnerTeam);
    }
    public async Task Add(FoosballGame game)
    {
        var content = JsonConvert.SerializeObject(game, Settings);
        var dbGame  = new DbFoosballGame(game.Id, content);
        await _context.AddAsync(dbGame);

        try
        {
            await _context.SaveChangesAsync();
        }
        catch (Exception ex) when(ex.InnerException is PostgresException {
            SqlState: "23505"
        })
Exemple #10
0
        public FoosballGame Build()
        {
            var game = new FoosballGame
            {
                TableId   = tableId,
                StartDate = startDate
            };

            if (teamA != default && teamB != default)
            {
                game.FoosballPlayerSetup = new FoosballPlayerSetup
                {
                    TeamA = teamA,
                    TeamB = teamB
                };
            }

            return(game);
        }
Exemple #11
0
 public async Task HandleAsync(CreateFoosballGame command)
 {
     var game = FoosballGame.Initialize(command);
     await _foosballGamesRepository.Add(game);
 }